Esempio n. 1
0
        public void Done()
        {
            if (IsWorking)
            {
                return;
            }

            var username = IsPublic? UserName : string.Empty;

            if (username != null &&
                username.StartsWith("@"))
            {
                username = username.Substring(1, username.Length - 1);
            }

            IsWorking = true;
            MTProtoService.UpdateUsernameAsync(_newChannel.ToInputChannel(), new TLString(username),
                                               user => Execute.BeginOnUIThread(() =>
            {
                IsWorking = false;

                _newChannel.UserName = new TLString(username);
                _newChannel.NotifyOfPropertyChange(() => _newChannel.UserName);
                NavigationService.GoBack();
            }),
                                               error => Execute.BeginOnUIThread(() =>
            {
                IsWorking = false;
                if (TLRPCError.CodeEquals(error, ErrorCode.FLOOD))
                {
                    HasError = true;
                    Error    = AppResources.FloodWaitString;
                    MessageBox.Show(AppResources.FloodWaitString, AppResources.Error, MessageBoxButton.OK);
                }
                else if (TLRPCError.CodeEquals(error, ErrorCode.INTERNAL))
                {
                    var messageBuilder = new StringBuilder();
                    messageBuilder.AppendLine(AppResources.ServerErrorMessage);
                    messageBuilder.AppendLine();
                    messageBuilder.AppendLine("Method: channels.updateUsername");
                    messageBuilder.AppendLine("Result: " + error);

                    HasError = true;
                    Error    = AppResources.ServerError;
                    MessageBox.Show(messageBuilder.ToString(), AppResources.ServerError, MessageBoxButton.OK);
                }
                else if (TLRPCError.CodeEquals(error, ErrorCode.BAD_REQUEST))
                {
                    if (TLRPCError.TypeEquals(error, ErrorType.USERNAME_NOT_MODIFIED))
                    {
                        _newChannel.UserName = new TLString(username);
                        _newChannel.NotifyOfPropertyChange(() => _newChannel.UserName);

                        HasError = false;
                        Error    = string.Empty;
                        NavigationService.GoBack();
                        return;
                    }
                    else if (TLRPCError.TypeEquals(error, ErrorType.USERNAME_INVALID))
                    {
                        HasError = true;
                        Error    = IsMegaGroup ? AppResources.GroupNameInvalid : AppResources.ChannelNameInvalid;
                        MessageBox.Show(IsMegaGroup ? AppResources.GroupNameInvalid : AppResources.ChannelNameInvalid, AppResources.Error, MessageBoxButton.OK);
                    }
                    else if (TLRPCError.TypeEquals(error, ErrorType.USERNAME_OCCUPIED))
                    {
                        HasError = true;
                        Error    = IsMegaGroup ? AppResources.GroupNameOccupied : AppResources.ChannelNameOccupied;
                        MessageBox.Show(IsMegaGroup ? AppResources.GroupNameOccupied : AppResources.ChannelNameOccupied, AppResources.Error, MessageBoxButton.OK);
                    }
                    else if (TLRPCError.TypeEquals(error, ErrorType.CHANNELS_ADMIN_PUBLIC_TOO_MUCH))
                    {
                        HasError = true;
                        Error    = AppResources.ChannelsAdminPublicTooMuchShort;
                        MessageBox.Show(AppResources.ChannelsAdminPublicTooMuch, AppResources.Error, MessageBoxButton.OK);
                    }
                    else
                    {
                        HasError = true;
                        Error    = error.ToString();
                    }
                }
                else
                {
                    HasError = true;
                    Error    = string.Empty;
                    Execute.ShowDebugMessage("channels.updateUsername error " + error);
                }
            }));
        }