private void OnMessagesServiceResolvedUnreadFriendMessages(object sender, ResolvedUnreadFriendMessagesSignalArgs e) { try { if (e.Counts != null && e.Counts.Any()) { PossibleConversations.ForEach <PossibleConverstionItem>(possibleConversation => possibleConversation.UnreadMessagesCount = 0); UnreadMessages = 0; e.Counts.ForEach(friendUnreadingMessages => { PossibleConverstionItem possibleConverstionItem = PossibleConversations.FirstOrDefault(possibleConversation => friendUnreadingMessages.Id == possibleConversation.Companion.Id); if (possibleConverstionItem != null) { possibleConverstionItem.UnreadMessagesCount = (int)friendUnreadingMessages.Count; } }); UnreadMessages = PossibleConversations.Sum <PossibleConverstionItem>(possibleConversation => possibleConversation.UnreadMessagesCount); } else { PossibleConversations.ForEach <PossibleConverstionItem>(possibleConversation => possibleConversation.UnreadMessagesCount = 0); UnreadMessages = 0; } } catch (Exception exc) { Crashes.TrackError(exc); Debugger.Break(); PossibleConversations?.ForEach <PossibleConverstionItem>(possibleConversation => possibleConversation.UnreadMessagesCount = 0); UnreadMessages = 0; } GlobalSettings.Instance.AppMessagingEvents.MessagingEvents.RefreshedUnreadMessagesForConverseClusterTabInvoke(this, UnreadMessages); }
protected override void OnStartListeningToHub() { _hubConnection.On <ReceivedMessageSignalArgs>(_RECEIVE_NEW_MESSAGE, (args) => { FriendMessageReceived.Invoke(this, args); }); _hubConnection.On <object>(_UNREAD_FRIEND_MESSAGES, (args) => { try { ResolvedUnreadFriendMessagesSignalArgs resolvedUnreadFriendMessagesSignalArgs = JsonConvert.DeserializeObject <ResolvedUnreadFriendMessagesSignalArgs>(args.ToString()); RefreshedUnreadFriendMessages.Invoke(this, resolvedUnreadFriendMessagesSignalArgs); } catch (Exception exc) { Debugger.Break(); throw new InvalidOperationException("MessagesService on SignalR UnreadedMessages", exc); } }); }