コード例 #1
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());
            }
        }