Beispiel #1
0
        private void AddLatestMessage(ChatMessageModel message)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            var messageViewModel = CreateMessageViewModel(message);

            if (TryAddMessageToCache(message))
            {
                _messageAdded.OnNext(messageViewModel);

                var chat = new ChatSummaryModel {
                    Id = messageViewModel.ChatId
                };

                if (TryAddChat(chat))
                {
                    UpdateChatsListFromNetworkAsync();
                }

                FindChatForUpdateLastMessage(message);
            }
        }
Beispiel #2
0
 private bool TryAddChat(ChatSummaryModel chatSummary)
 {
     return(ModifyChatsSafely(() =>
     {
         if (chatSummary == null || ChatsCollection.Any(x => x.ChatId == chatSummary.Id))
         {
             return false;
         }
         var viewModel = _viewModelFactoryService.ResolveViewModel <ChatSummaryViewModel, ChatSummaryModel>(chatSummary);
         ChatsCollection.Insert(0, viewModel);
         ChatsCollection.Sort((x, y) => y.LastUpdateDate.CompareTo(x.LastUpdateDate));
         return true;
     }));
 }
Beispiel #3
0
        private void OnChatUpdated(ChatSummaryModel updatedChatSummary)
        {
            if (updatedChatSummary == null)
            {
                return;
            }

            ModifyChatsSafely(() =>
            {
                var chatSummary = ChatsCollection.FirstOrDefault(x => x.ChatId == updatedChatSummary.Id);
                if (chatSummary != null)
                {
                    chatSummary.UpdateModel(updatedChatSummary);
                }
            });
        }
        public ChatDetailsHeaderViewModel(
            ChatSummaryModel chatModel,
            IUploadImageService uploadImageService,
            IChatsListManager chatsListManager)
        {
            _chatModel          = chatModel;
            _uploadImageService = uploadImageService;
            _chatsListManager   = chatsListManager;

            ChatName  = chatModel.Name;
            AvatarUrl = chatModel.PhotoUrl;
            IsMuted   = chatModel.IsMuted;

            StartEditingCommand            = new RelayCommand(StartEditing);
            ChangeMuteNotificationsCommand = new RelayCommand(() => ChangeMuteNotificationsAsync().FireAndForget());
            SaveCommand = new RelayCommand <Func <(Task <Stream>, string)> >(x => SaveAsync(x).FireAndForget());
        }
Beispiel #5
0
 public Task EditChatAsync(ChatSummaryModel chatSummary)
 {
     return(_chatService.EditChatAsync(chatSummary));
 }