예제 #1
0
        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);
        }
예제 #2
0
        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);
                }
            });
        }