Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        public ConversationTabViewModel BuildConversationTab(PossibleConverstionItem data)
        {
            ConversationTabViewModel conversationTabViewModel = BuildSingleMessengerTabItem <ConversationTabViewModel>("");

            conversationTabViewModel.InitializeAsync(data);

            return(conversationTabViewModel);
        }
Ejemplo n.º 3
0
        protected override void SubscribeOnIntentEvent()
        {
            base.SubscribeOnIntentEvent();

            /// If it will be neccessary remove this subscriptions to the `long terme app events subscription`
            ///
            MessagingCenter.Subscribe <object, long>(this, GlobalSettings.Instance.AppMessagingEvents.FriendEvents.FriendDeleted, (sender, args) => {
                PossibleConverstionItem itemToRemove = PossibleConversations?.FirstOrDefault <PossibleConverstionItem>(pCI => (pCI.Companion is ProfileDTO && pCI.Companion.Id == args));
                PossibleConversations?.Remove(itemToRemove);
            });
            MessagingCenter.Subscribe <object, long>(this, GlobalSettings.Instance.AppMessagingEvents.FriendEvents.FriendshipInviteAccepted, (sender, args) => { });
            _stateService.InvitesChanged    += OnStateServiceInvitesChanged;
            _stateService.ChangedFriendship += OnStateServiceChangedFriendship;
        }
        public PossibleConverstionItem BuildConversationItem(IPossibleMessaging data)
        {
            PossibleConverstionItem converstionItem = new PossibleConverstionItem();

            converstionItem.IconPath  = null;
            converstionItem.Companion = data;

            string resolvedCompanionName = _COMPANION_NAME_STUB;

            if (data is ProfileDTO profileDTO)
            {
                converstionItem.MessagingCompanionType = MessagingCompanionType.Friend;
                converstionItem.ProfileType            = profileDTO.Type;
                converstionItem.IsAvailable            = profileDTO.Availability.ToLower() == _ONLINE_AVAILABILITY_VALUE;
                converstionItem.IconPath = (profileDTO.Avatar != null) ? profileDTO.Avatar.Url : null;

                resolvedCompanionName = string.Format("{0} {1}", profileDTO.FirstName, profileDTO.LastName);
            }
            else if (data is GroupDTO groupDTO)
            {
                converstionItem.MessagingCompanionType = MessagingCompanionType.Group;

                resolvedCompanionName = groupDTO.Name;
            }
            else if (data is TeamDTO teamDTO)
            {
                converstionItem.MessagingCompanionType = MessagingCompanionType.Team;

                resolvedCompanionName = teamDTO.Name;
            }
            else if (data is FamilyDTO)
            {
                converstionItem.MessagingCompanionType = MessagingCompanionType.Family;

                resolvedCompanionName = _FAMILY_CONVERSATION_TITLE;
            }
            else
            {
                throw new InvalidOperationException(_COMPANION_TYPE_ERROR);
            }

            converstionItem.CompanionName = resolvedCompanionName;

            return(converstionItem);
        }
Ejemplo n.º 5
0
        public MessageItem BuildSingleMessageItem(MessageDTO message, PossibleConverstionItem conversation)
        {
            MessageItem messageItem = new MessageItem()
            {
                IsIncomming = message.FromId == GlobalSettings.Instance.UserProfile.Id,
                Data        = message
            };

            if (messageItem.IsIncomming)
            {
                messageItem.Avatar = (GlobalSettings.Instance.UserProfile.Avatar?.Url != null)
                    ? GlobalSettings.Instance.UserProfile.Avatar?.Url
                    : null;
            }
            else
            {
                messageItem.Avatar = ResolveCompanionAvatar(message, conversation);
            }

            return(messageItem);
        }
Ejemplo n.º 6
0
        private string ResolveCompanionAvatar(MessageDTO message, PossibleConverstionItem conversation)
        {
            string avatarPath = null;

            ProfileDTO profileDTO = null;

            switch (conversation.MessagingCompanionType)
            {
            case MessagingCompanionType.Family:
                profileDTO = ((FamilyDTO)conversation.Companion).Members?.FirstOrDefault(m => m.Id == message.FromId);
                break;

            case MessagingCompanionType.Friend:
                profileDTO = ((ProfileDTO)conversation.Companion);
                break;

            case MessagingCompanionType.Team:
                profileDTO = ((TeamDTO)conversation.Companion).Members?.FirstOrDefault(m => m.Member.Id == message.FromId)?.Member;

                if (profileDTO == null)
                {
                    profileDTO = ((TeamDTO)conversation.Companion).CreatedBy;
                }
                break;

            case MessagingCompanionType.Group:
                profileDTO = ((GroupDTO)conversation.Companion).Members?.FirstOrDefault(m => m.Profile.Id == message.FromId).Profile;
                break;
            }

            if (profileDTO != null && profileDTO.Avatar != null)
            {
                avatarPath = profileDTO.Avatar.Url;
            }

            return(avatarPath);
        }
        private void LostRealtionWithTeam(long targetTeamId)
        {
            PossibleConverstionItem itemToRemove = PossibleConversations?.FirstOrDefault <PossibleConverstionItem>(pCI => (pCI.Companion is TeamDTO && pCI.Companion.Id == targetTeamId));

            PossibleConversations?.Remove(itemToRemove);
        }
Ejemplo n.º 8
0
        public List <MessageItem> CreateMessageItems(IEnumerable <MessageDTO> messages, PossibleConverstionItem conversation)
        {
            List <MessageItem> messageItems = new List <MessageItem>();

            foreach (MessageDTO message in messages)
            {
                messageItems.Add(BuildSingleMessageItem(message, conversation));
            }

            return(messageItems);
        }
Ejemplo n.º 9
0
        public MessageItem BuildSingleMessageItem(ReceivedMessageSignalArgs messageArgs, PossibleConverstionItem conversation)
        {
            MessageDTO message = BuildMessage(messageArgs);

            return(BuildSingleMessageItem(message, conversation));
        }