private void ProcessNewChats(IEnumerable <Chat> chats) { if (chats == null) { return; } var chatsArray = chats as Chat[] ?? chats.ToArray(); if (!chatsArray.Any()) { return; } lock (ChatsStorage) foreach (var chat in chatsArray) { if (!ChatsStorage.ContainsKey(chat.Id)) { ChatsStorage.Add(chat.Id, chat); } } NewChatsEvent?.Invoke(this, chatsArray); AreChatsPolled = true; }
public void SetChat(Chat chat) { lock (ChatsStorage) { if (ChatsStorage.ContainsKey(chat.Id)) { ChatsStorage[chat.Id] = chat; lock (_newChatInfoHandlers) if (_newChatInfoHandlers.ContainsKey(chat.Id)) { _newChatInfoHandlers[chat.Id]?.Invoke(this, chat); } } else { ChatsStorage.Add(chat.Id, chat); NewChatsEvent?.Invoke(this, new[] { chat }); } } }
private void PollerOnNewChatsEvent(object sender, IEnumerable <Chat> enumerable) { NewChatsEvent?.Invoke(this, enumerable); }