/// <summary> /// Provoque un appel protégé avec sauvegarde si les modifications d'un thème n'ont pas été enregistré /// </summary> async Task <bool> CallProtectedWithDirtySaveIfRequired(Func <Task <bool> > call) { Exception error = null; try { // Si le thème actuel est à sauvegarder if (CurrentNatalChart.IsDirty) { // On demande à l'utilisateur ce qu'il veut faire var cr = await DialogService.Confirm( AstroAssistant.Resources.Locales.SaveChangesDialogTitle, AstroAssistant.Resources.Locales.SaveChangesDialogMessage, DialogConfirmType.YesNoCancel); if (cr == DialogConfirmResult.Cancel) { return(false); } if (cr == DialogConfirmResult.Yes) { if (!await CurrentNatalChart.Save()) { return(false); } } } // On provoque l'appel return(await call()); } catch (Exception ex) { error = ex; } if (error != null) { await DialogService.ShowError(error); } return(false); }
/// <summary> /// Enregistrement d'un thème astral /// </summary> public Task <bool> SaveNatalChart() { return(CallProtectedWithDirtySaveIfRequired(() => Task.Run(() => CurrentNatalChart.Save()))); }