示例#1
0
        public void Handle(MessagesRemovedEventArgs args)
        {
            if (With == args.Dialog.With && args.Messages != null)
            {
                Execute.BeginOnUIThread(() =>
                {
                    foreach (var message in args.Messages)
                    {
                        if (EditedMessage?.Id == message.Id)
                        {
                            ClearReplyCommand.Execute();
                        }
                        else if (ReplyInfo?.ReplyToMsgId == message.Id)
                        {
                            ClearReplyCommand.Execute();
                        }

                        var removed = Items.Remove(message);
                        if (removed == false)
                        {
                            // Check if this is really needed

                            var already = Items.FirstOrDefault(x => x.Id == message.Id);
                            if (already != null)
                            {
                                Items.Remove(already);
                            }
                        }
                    }
                });
            }
        }
示例#2
0
        public void Handle(MessagesRemovedEventArgs args)
        {
            var with = CurrentItem as TLObject;

            if (with == args.Dialog.With && args.Messages != null)
            {
                DeleteLinksInternal(args.Messages);
            }
        }
 public void Handle(MessagesRemovedEventArgs args)
 {
     if (With == args.Dialog.With && args.Messages != null)
     {
         BeginOnUIThread(() =>
         {
             foreach (var message in args.Messages)
             {
                 Items.Remove(message);
             }
             IsEmptyDialog = Items.Count == 0 && LazyItems.Count == 0;
         });
     }
 }
示例#4
0
        public void Handle(MessagesRemovedEventArgs args)
        {
            if (With == args.Dialog.With && args.Messages != null)
            {
                BeginOnUIThread(() =>
                {
                    var groups = new Dictionary <long, Tuple <TLMessage, GroupedMessages> >();

                    foreach (var message in args.Messages)
                    {
                        if (message is TLMessage grouped && grouped.HasGroupedId && grouped.GroupedId is long groupedId && _groupedMessages.TryGetValue(groupedId, out TLMessage group) && group.Media is TLMessageMediaGroup groupMedia)
                        {
                            groupMedia.Layout.Messages.Remove(grouped);
                            groups[groupedId] = Tuple.Create(group, groupMedia.Layout);
                        }
                    }

                    foreach (var group in groups.Values)
                    {
                        if (group.Item2.Messages.Count > 0)
                        {
                            group.Item2.Calculate();
                            group.Item1.RaisePropertyChanged(() => group.Item1.Self);
                        }
                        else
                        {
                            _groupedMessages.TryRemove(group.Item2.GroupedId, out TLMessage removed);
                            Items.Remove(group.Item1);
                        }
                    }

                    foreach (var message in args.Messages)
                    {
                        if (EditedMessage?.Id == message.Id)
                        {
                            ClearReplyCommand.Execute();
                        }
                        else if (ReplyInfo?.ReplyToMsgId == message.Id)
                        {
                            ClearReplyCommand.Execute();
                        }

                        if (PinnedMessage?.Id == message.Id)
                        {
                            PinnedMessage = null;
                        }

                        if (Full is TLChannelFull channelFull && channelFull.PinnedMsgId == message.Id)
                        {
                            channelFull.PinnedMsgId    = null;
                            channelFull.HasPinnedMsgId = false;
                        }

                        var removed = Items.Remove(message);
                        if (removed == false)
                        {
                            // Check if this is really needed

                            var already = Items.FirstOrDefault(x => x.Id == message.Id);
                            if (already != null)
                            {
                                Items.Remove(already);
                            }
                        }
                    }
                });
            }
        }