Ejemplo n.º 1
0
        public void CheckNewMessages()
        {
            if (IsChatsFill)
            {
                MessengerClient   msClient     = new MessengerClient();
                bool              isExist      = false;
                List <ChatDTO>    chats        = msClient.GetChats(Account).ToList();
                List <StackPanel> dialogPanels = null;
                Dispatcher.Invoke(() => dialogPanels = DialogPanels);

                foreach (var item in chats)
                {
                    foreach (var panel in dialogPanels)
                    {
                        ChatDTO chatPanel = null;
                        Dispatcher.Invoke(() => chatPanel = panel.Tag as ChatDTO);
                        if (item.Participants == chatPanel.Participants)
                        {
                            isExist = true;
                            if (item.MessageId > chatPanel.MessageId)
                            {
                                Dispatcher.Invoke(() =>
                                {
                                    chatPanel.MessageId = item.MessageId;
                                    AddMessage(panel, msClient.GetMessageById(item.MessageId.Value));
                                    chatScroll.ScrollToVerticalOffset(Math.Pow(100, 100));
                                    return;
                                });
                            }
                        }
                    }
                    if (!isExist)
                    {
                        bool isContact = false;
                        Dispatcher.Invoke(() =>
                        {
                            foreach (Chip acc in panelContacts.Children)
                            {
                                if (item.Participants.Contains((acc.Tag as AccountDTO).Id.ToString()))
                                {
                                    isContact = true;
                                }
                            }
                            AccountDTO account = messengerClient.GetUserById(messengerClient.GetMessageById(item.MessageId.Value).DeliverId.Value);
                            if (!isContact & account.Id != Account.Id)
                            {
                                ms = new MemoryStream(account.Image);
                                listMails.Items.Add(new SearchClass {
                                    Img = BitmapFrame.Create(ms), Text = account.Name, Tag = account
                                });
                            }
                            StackPanel panel = new StackPanel {
                                Tag = item, Width = 907
                            };
                            AddMessage(panel, msClient.GetMessageById(item.MessageId.Value));
                            DialogPanels.Add(panel);
                        });
                    }
                    isExist = false;
                }
            }
        }