async Task DeleteContribution() { try { // Shouldn't be getting here anyway, so no need for a message. if (!Contribution.StartDate.IsWithinCurrentAwardPeriod()) { return; } // Ask for confirmation before deletion. if (await _dialogService.ConfirmAsync("Are you sure you want to delete this contribution? You cannot undo this.", Alerts.HoldOn, Alerts.OK, Alerts.Cancel)) { var isDeleted = await _mvpApiService.DeleteContributionAsync(Contribution); if (isDeleted) { // Pass back true to indicate it needs to refresh. await CoreMethods.PopPageModel(true, false, true); } else { await _dialogService.AlertAsync("Your contribution could not be deleted. Perhaps it was already deleted, or it took place in the previous award period?", Alerts.Error, Alerts.OK); } } } catch (Exception ex) { _analyticsService.Report(ex); await _dialogService.AlertAsync(Alerts.UnexpectedError, Alerts.Error, Alerts.OK); } }
/// <summary> /// Deletes a contribution. /// </summary> async Task DeleteContribution() { try { // Shouldn't be getting here anyway, so no need for a message. if (!CanBeEdited) { return; } if (!await VerifyInternetConnection()) { return; } // Ask for confirmation before deletion. var confirm = await DialogService.ConfirmAsync(Translations.contributiondetail_deleteconfirmation, Translations.warning_title, Translations.ok, Translations.cancel).ConfigureAwait(false); if (!confirm) { return; } State = LayoutState.Loading; var isDeleted = await MvpApiService.DeleteContributionAsync(Contribution); if (isDeleted) { // TODO: Pass back true to indicate it needs to refresh. // TODO: Be a bit more sensible with muh threads plz. MainThread.BeginInvokeOnMainThread(() => HapticFeedback.Perform(HapticFeedbackType.LongPress)); AnalyticsService.Track("Contribution Deleted"); await MainThread.InvokeOnMainThreadAsync(() => BackAsync()); //MessagingService.Current.SendMessage(MessageKeys.HardRefreshNeeded); MessagingService.Current.SendMessage(MessageKeys.HardRefreshNeeded); } else { await DialogService.AlertAsync(Translations.contributiondetail_notdeleted, Translations.error_title, Translations.ok).ConfigureAwait(false); } } catch (Exception ex) { AnalyticsService.Report(ex); await DialogService.AlertAsync(Translations.error_unexpected, Translations.error_title, Translations.ok).ConfigureAwait(false); } finally { State = LayoutState.None; } }