import '../../about/external/data/RoutineChain.dart'; import '../../about/external/data/pages/request/HistoryRequest.dart'; import '../../about/external/data/pages/request/PageAndSort.dart'; import '../../about/external/data/pages/request/Pageable.dart'; import '../../about/external/data/pages/request/Sort.dart'; import '../../utils/ObjectConvertors.dart'; import '../parent/ParentViewModel.dart'; import 'ConnectRoutineBuilder.dart'; class ViewRoutineBuilder extends ParentViewModel { ConnectRoutineBuilder connection; ViewRoutineBuilder(super.context, this.connection); /// Goals for the picker — loaded on tap, never up front. void loadGoals() async { if (!await hasNetwork(() => loadGoals())) return; showLoading("Loading goals"); try { final response = await getDataManager().getMyGoals(HistoryRequest( query: PageAndSort( sort: Sort('desc', 'startDate'), page: Pageable(0, 0, 50, 0), ), )); closeLoading(); connection.onGoalsReady(getGoalList(response.data)); } catch (e) { handleError(e, () => loadGoals(), () => dismissError(), "Retry"); } } void save(RoutineChain routine) async { if (!await hasNetwork(() => save(routine))) return; showLoading("Saving routine"); try { for (int index = 0; index < routine.steps.length; index++) { routine.steps[index].order = index; routine.steps[index].completed = false; } await getDataManager().saveRoutineEntry(routine.toJson()); closeLoading(); connection.onSaved(); } catch (e) { handleError(e, () => save(routine), () => dismissError(), "Retry"); } } }