Example #1
0
        public virtual void Update(TLDialog dialog)
        {
            Flags = dialog.Flags;
            Draft = dialog.Draft;

            ReadInboxMaxId = dialog.ReadInboxMaxId;

            Peer                = dialog.Peer;
            UnreadCount         = dialog.UnreadCount;
            UnreadMentionsCount = dialog.UnreadMentionsCount;

            //если последнее сообщение отправляется и имеет дату больше, то не меняем
            if (TopMessageItem == null && (TopMessageItem == null || TopMessageItem.Date > dialog.TopMessageItem.Date))
            {
                //добавляем сообщение в список в нужное место, если его еще нет
                var insertRequired = false;
                if (Messages != null && dialog.TopMessageItem != null)
                {
                    var oldMessage = Messages.FirstOrDefault(x => x.Id == dialog.TopMessageItem.Id);
                    if (oldMessage == null)
                    {
                        insertRequired = true;
                    }
                }

                if (insertRequired)
                {
                    InsertMessageInOrder(Messages, dialog.TopMessageItem);
                }

                return;
            }
            TopMessage         = dialog.TopMessage;
            TopMessageRandomId = dialog.TopMessageRandomId;
            TopMessageItem     = dialog.TopMessageItem;

            lock (MessagesSyncRoot)
            {
                if (Messages.Count > 0)
                {
                    for (int i = 0; i < Messages.Count; i++)
                    {
                        if (Messages[i].Date < TopMessageItem.Date)
                        {
                            Messages.Insert(i, TopMessageItem);
                            break;
                        }
                        if (Messages[i].Date == TopMessageItem.Date)
                        {
                            break;
                        }
                    }
                }
                else
                {
                    Messages.Add(TopMessageItem);
                }
            }
        }
Example #2
0
        public override void Update(TLDialog dialog)
        {
            try
            {
                base.Update(dialog);
            }
            catch (Exception ex)
            {
            }

            var dialog24 = dialog as TLDialog24;

            if (dialog24 != null)
            {
                ReadInboxMaxId = dialog24.ReadInboxMaxId;
            }
        }
Example #3
0
        public override void Update(TLDialog dialog)
        {
            try
            {
                base.Update(dialog);
            }
            catch (Exception ex)
            {
            }

            var d = dialog as TLDialogChannel;

            if (d != null)
            {
                TopImportantMessageId = d.TopImportantMessageId;
                UnreadImportantCount  = d.UnreadImportantCount;
                Pts = d.Pts;
            }
        }
Example #4
0
        public virtual void Update(TLDialog dialog)
        {
            Peer        = dialog.Peer;
            UnreadCount = dialog.UnreadCount;

            //если последнее сообщение отправляется и имеет дату больше, то не меняем
            if (TopMessageId == null && TopMessage.DateIndex > dialog.TopMessage.DateIndex)
            {
                //добавляем сообщение в список в нужное место
                InsertMessageInOrder(Messages, dialog.TopMessage);

                return;
            }
            TopMessageId       = dialog.TopMessageId;
            TopMessageRandomId = dialog.TopMessageRandomId;
            TopMessage         = dialog.TopMessage;
            if (Messages.Count > 0)
            {
                for (int i = 0; i < Messages.Count; i++)
                {
                    if (Messages[i].DateIndex < TopMessage.DateIndex)
                    {
                        Messages.Insert(i, TopMessage);
                        break;
                    }
                    if (Messages[i].DateIndex == TopMessage.DateIndex)
                    {
                        break;
                    }
                }
            }
            else
            {
                Messages.Add(TopMessage);
            }
        }