import '../../about/external/initial/GoalRequest.dart'; import '../../about/external/initial/IdRequest.dart'; import '../parent/ParentViewModel.dart'; import 'ConnectGoalEditor.dart'; class ViewGoalEditor extends ParentViewModel { ConnectGoalEditor connection; ViewGoalEditor(super.context, this.connection); void save(GoalRequest request) async { if (!await hasNetwork(() => save(request))) return; showLoading("Saving goal"); try { await getDataManager().saveGoalEntry(request); closeLoading(); connection.onSaved(); } catch (e) { handleError(e, () => save(request), () => dismissError(), "Retry"); } } /// Archiving hides the goal; its tasks and their history stay exactly as /// they were. Debt already accrued is not forgiven by archiving. void archive(String goalId) async { if (!await hasNetwork(() => archive(goalId))) return; showLoading("Archiving"); try { await getDataManager().archiveGoalEntry(IdRequest(id: goalId)); closeLoading(); connection.onArchived(); } catch (e) { handleError(e, () => archive(goalId), () => dismissError(), "Retry"); } } }