private async void DisconnectGoogleHandler() { if (SelectedProfile.SelectedGoogleAccount == null) { MessageService.ShowMessageAsync("No account selected"); return; } var dialogResult = await MessageService.ShowConfirmMessage( "Disconnection of Google account cannot be reverted.\nClick Yes to continue."); if (dialogResult == MessageDialogResult.Negative) { return; } var result = AccountAuthenticationService.DisconnectGoogle(SelectedProfile.SelectedGoogleAccount.Name); if (result) { //Remove google account var googleAccount = GoogleAccounts.FirstOrDefault(account => account.Name == SelectedProfile.SelectedGoogleAccount.Name); if (googleAccount != null) { foreach (var profileViewModel in SyncProfileList) { if (profileViewModel.SelectedGoogleAccount != null && profileViewModel.SelectedGoogleAccount.Name.Equals(googleAccount.Name)) { profileViewModel.SelectedGoogleAccount = null; profileViewModel.GoogleCalendars = null; profileViewModel.SelectedCalendar = null; } } GoogleAccounts.Remove(googleAccount); await MessageService.ShowMessage("Google account successfully disconnected"); foreach (var calendarSyncProfile in Settings.SyncProfiles) { if (calendarSyncProfile.GoogleAccount != null && calendarSyncProfile.GoogleAccount.Name.Equals(googleAccount.Name)) { calendarSyncProfile.GoogleAccount = null; } } await SettingsSerializationService.SerializeSettingsAsync(Settings); } } else { MessageService.ShowMessageAsync("Account wasn't authenticated earlier or disconnection failed."); } }