private async void RevokeLinkExecute(Chat chat)
        {
            if (chat.Type is ChatTypeSupergroup super)
            {
                var supergroup = ProtoService.GetSupergroup(super.SupergroupId);
                if (supergroup == null)
                {
                    return;
                }

                var dialog = new MessagePopup();
                dialog.Title               = Strings.Resources.AppName;
                dialog.Message             = string.Format(Strings.Resources.RevokeLinkAlert, MeUrlPrefixConverter.Convert(CacheService, supergroup.Username, true), chat.Title);
                dialog.PrimaryButtonText   = Strings.Resources.RevokeButton;
                dialog.SecondaryButtonText = Strings.Resources.Cancel;

                var confirm = await dialog.ShowQueuedAsync();

                if (confirm == ContentDialogResult.Primary)
                {
                    var response = await ProtoService.SendAsync(new SetSupergroupUsername(supergroup.Id, string.Empty));

                    if (response is Ok)
                    {
                        HasTooMuchUsernames = false;
                        AdminedPublicChannels.Clear();
                    }
                }
            }
        }
Beispiel #2
0
        private async void RevokeLinkExecute(TLChannel channel)
        {
            var dialog = new TLMessageDialog();

            dialog.Title               = Strings.Android.AppName;
            dialog.Message             = string.Format(Strings.Android.RevokeLinkAlert, channel.Username, channel.DisplayName);
            dialog.PrimaryButtonText   = Strings.Android.RevokeButton;
            dialog.SecondaryButtonText = Strings.Android.Cancel;

            var confirm = await dialog.ShowQueuedAsync();

            if (confirm == ContentDialogResult.Primary)
            {
                var response = await ProtoService.UpdateUsernameAsync(channel.ToInputChannel(), string.Empty);

                if (response.IsSucceeded)
                {
                    channel.HasUsername = false;
                    channel.Username    = null;
                    channel.RaisePropertyChanged(() => channel.HasUsername);
                    channel.RaisePropertyChanged(() => channel.Username);

                    HasTooMuchUsernames = false;
                    AdminedPublicChannels.Clear();
                }
            }
        }
        private async void RevokeLinkExecute(TLChannel channel)
        {
            var dialog = new TLMessageDialog();

            dialog.Title               = "Revoke link";
            dialog.Message             = string.Format("Are you sure you want to revoke the link t.me/{0}?\r\n\r\nThe channel \"{1}\" will become private.", channel.Username, channel.DisplayName);
            dialog.PrimaryButtonText   = "Revoke";
            dialog.SecondaryButtonText = "Cancel";

            var confirm = await dialog.ShowQueuedAsync();

            if (confirm == ContentDialogResult.Primary)
            {
                var response = await ProtoService.UpdateUsernameAsync(channel.ToInputChannel(), string.Empty);

                if (response.IsSucceeded)
                {
                    channel.HasUsername = false;
                    channel.Username    = null;
                    channel.RaisePropertyChanged(() => channel.HasUsername);
                    channel.RaisePropertyChanged(() => channel.Username);

                    HasTooMuchUsernames = false;
                    AdminedPublicChannels.Clear();
                }
            }
        }
        private async void LoadAdminedPublicChannels()
        {
            if (AdminedPublicChannels.Count > 0)
            {
                return;
            }

            var response = await ProtoService.SendAsync(new GetCreatedPublicChats());

            if (response is Telegram.Td.Api.Chats chats)
            {
                var result = new List <Chat>();

                foreach (var id in chats.ChatIds)
                {
                    var chat = ProtoService.GetChat(id);
                    if (chat != null)
                    {
                        result.Add(chat);
                    }
                }

                AdminedPublicChannels.ReplaceWith(result);
            }
            else if (response is Error error)
            {
                Execute.ShowDebugMessage("channels.getAdminedPublicChannels error " + error);
            }
        }
Beispiel #5
0
        private async void LoadAdminedPublicChannels()
        {
            if (AdminedPublicChannels.Count > 0)
            {
                return;
            }

            var response = await ProtoService.GetAdminedPublicChannelsAsync();

            if (response.IsSucceeded)
            {
                AdminedPublicChannels.ReplaceWith(response.Result.Chats.OfType <TLChannel>());
            }
            else
            {
                Execute.ShowDebugMessage("channels.getAdminedPublicChannels error " + response.Error);
            }
        }
        private void GetAdminedPublichChannelsAsync()
        {
            if (AdminedPublicChannels.Count > 0)
            {
                return;
            }

            MTProtoService.GetAdminedPublicChannelsAsync(
                result => BeginOnUIThread(() =>
            {
                AdminedPublicChannels.Clear();
                foreach (var chat in result.Chats)
                {
                    AdminedPublicChannels.Add(chat);
                }
            }),
                error => BeginOnUIThread(() =>
            {
                Execute.ShowDebugMessage("channels.getAdminedPublicChannels error " + error);
            }));
        }