public void Done() { if (IsWorking) { return; } var chat = CurrentItem as TLChat; if (chat != null) { IsWorking = true; MTProtoService.EditChatTitleAsync(chat.Id, new TLString(Title), statedMessage => { IsWorking = false; var updates = statedMessage as TLUpdates; if (updates != null) { var updateNewMessage = updates.Updates.FirstOrDefault(x => x is TLUpdateNewMessage) as TLUpdateNewMessage; if (updateNewMessage != null) { EventAggregator.Publish(updateNewMessage.Message); BeginOnUIThread(() => NavigationService.GoBack()); } } }, error => { Execute.ShowDebugMessage("messages.editChatTitle error " + error); IsWorking = false; BeginOnUIThread(() => NavigationService.GoBack()); }); return; } var channel = CurrentItem as TLChannel; if (channel != null) { EditChannelAboutAsync(channel, new TLString(About), () => EditChannelTitleAsync(channel, new TLString(Title), () => NavigationService.GoBack())); return; } var broadcastChat = CurrentItem as TLBroadcastChat; if (broadcastChat != null) { broadcastChat.Title = new TLString(Title); CacheService.SyncBroadcast(broadcastChat, result => BeginOnUIThread(() => NavigationService.GoBack())); return; } }