コード例 #1
0
        protected override void OnStartListeningToHub()
        {
            _hubConnection.On <ReceivedMessageSignalArgs>(_RECEIVE_NEW_GROUP_MESSAGE, (args) => {
                GroupMessageReceived.Invoke(this, args);
            });

            _hubConnection.On <ReceivedMessageSignalArgs>(_RECEIVE_NEW_TEAM_MESSAGE, (args) => {
                TeamMessageReceived.Invoke(this, args);
            });

            _hubConnection.On <ReceivedMessageSignalArgs>(_RECEIVE_NEW_FAMILY_MESSAGE, (args) => {
                FamilyMessageReceived.Invoke(this, args);
            });

            _hubConnection.On <object>(_UNREAD_GROUP_MESSAGES, (args) => {
                try {
                    ResolvedUnreadGroupMessagesSignalArgs resolvedUnreadGroupMessagesSignalArgs = JsonConvert.DeserializeObject <ResolvedUnreadGroupMessagesSignalArgs>(args.ToString());
                    RefreshedUnreadGroupingMessages.Invoke(this, resolvedUnreadGroupMessagesSignalArgs);
                }
                catch (Exception exc) {
                    Debugger.Break();

                    throw new InvalidOperationException("GroupMessagingService on SignalR UnreadedMessages", exc);
                }
            });
        }
コード例 #2
0
        //private void OnGroupMessagingServiceResolvedUnreadGroupMessages(object sender, ResolvedUnreadGroupMessagesSignalArgs e) {
        //    try {
        //        if (e.GroupChatCounters != null && e.GroupChatCounters.Any()) {
        //            PossibleConversations.ForEach<PossibleConverstionItem>(possibleConversation => possibleConversation.UnreadMessagesCount = 0);
        //            UnreadMessages = 0;

        //            e.GroupChatCounters.ForEach(groupChat => {
        //                PossibleConverstionItem possibleConverstionItem = PossibleConversations.FirstOrDefault(possibleConversation => groupChat.Id == possibleConversation.Companion.Id);
        //                if (possibleConverstionItem != null) {
        //                    possibleConverstionItem.UnreadMessagesCount = (int)groupChat.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);
        //}

        private void OnGroupMessagingServiceResolvedUnreadGroupMessages(object sender, ResolvedUnreadGroupMessagesSignalArgs e)
        {
            try {
                if (e.GroupChatCounters != null && e.GroupChatCounters.Any())
                {
                    //PossibleConversations.ForEach<PossibleConverstionItem>(possibleConversation => possibleConversation.UnreadMessagesCount = 0);
                    //UnreadMessages = 0;

                    //e.GroupChatCounters.ForEach(groupChat => {
                    //    PossibleConverstionItem possibleConverstionItem = PossibleConversations.FirstOrDefault(possibleConversation => groupChat.Id == possibleConversation.Companion.Id);
                    //    if (possibleConverstionItem != null) {
                    //        possibleConverstionItem.UnreadMessagesCount = (int)groupChat.Count;
                    //    }
                    //});

                    //UnreadMessages = PossibleConversations.Sum<PossibleConverstionItem>(possibleConversation => possibleConversation.UnreadMessagesCount);

                    PossibleConversations.ForEach(possibleConversation => {
                        GroupUnreadMessages unreadMessages = e.GroupChatCounters.FirstOrDefault(groupUnreadMessages => groupUnreadMessages.Id == possibleConversation.Companion.Id);

                        possibleConversation.UnreadMessagesCount = unreadMessages != null ? (int)unreadMessages.Count : 0;
                    });

                    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);
        }