Ejemplo n.º 1
0
        private async void ParticipantRemoveExecute(TLChatParticipantBase participant)
        {
            if (participant == null || participant.User == null)
            {
                return;
            }

            var confirm = await TLMessageDialog.ShowAsync(string.Format("Do you want to remove {0} from the group {1}?", participant.User.FullName, _item.DisplayName), "Remove", "OK", "Cancel");

            if (confirm == ContentDialogResult.Primary)
            {
                var response = await ProtoService.DeleteChatUserAsync(_item.Id, participant.User.ToInputUser());

                if (response.IsSucceeded)
                {
                    if (response.Result is TLUpdates updates)
                    {
                        var newMessage = updates.Updates.OfType <TLUpdateNewMessage>().FirstOrDefault();
                        if (newMessage != null)
                        {
                            Aggregator.Publish(newMessage);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private async void DeleteExecute()
        {
            var item = _item;

            if (item == null)
            {
                return;
            }

            var confirm = await TLMessageDialog.ShowAsync(Strings.Android.AreYouSureDeleteAndExit, Strings.Android.AppName, Strings.Android.OK, Strings.Android.Cancel);

            if (confirm == ContentDialogResult.Primary)
            {
                if (item.IsLeft || item.HasMigratedTo)
                {
                    goto Skip;
                }

                var delete = await ProtoService.DeleteChatUserAsync(item.Id, new TLInputUserSelf());

                if (delete.IsSucceeded)
                {
                }
                else
                {
                    await new TLMessageDialog(delete.Error.ErrorMessage ?? "Error message", delete.Error.ErrorCode.ToString()).ShowQueuedAsync();
                    return;
                }

Skip:
                var peer = item.ToInputPeer();
                var offset = 0;

                do
                {
                    var response = await ProtoService.DeleteHistoryAsync(false, peer, 0);

                    if (response.IsSucceeded)
                    {
                        offset = response.Result.Offset;
                    }
                    else
                    {
                        await new TLMessageDialog(response.Error.ErrorMessage ?? "Error message", response.Error.ErrorCode.ToString()).ShowQueuedAsync();
                        return;
                    }
                }while (offset > 0);

                var dialog = CacheService.GetDialog(item.ToPeer());
                if (dialog != null)
                {
                    CacheService.DeleteDialog(dialog);
                    Aggregator.Publish(new DialogRemovedEventArgs(dialog));
                }

                NavigationService.RemovePeerFromStack(item.ToPeer());
            }
        }