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); } })); }