import 'package:stacked/stacked.dart'; import 'package:stacked_services/stacked_services.dart'; import 'package:yimaru_app/models/course_module.dart'; import '../../../app/app.locator.dart'; import '../../../models/course_unit.dart'; import '../../../services/api_service.dart'; import '../../../services/course_service.dart'; import '../../../services/status_checker_service.dart'; import '../../common/enmus.dart'; class CourseUnitViewModel extends ReactiveViewModel { // Dependency injection final _courseService = locator(); final _statusChecker = locator(); final _navigationService = locator(); @override List get listenableServices => [_courseService]; // Course units List get _units => _courseService.units; List get units => _units; // Navigation void pop() => _navigationService.back(); // Remote api call // Course units Future getCourseUnits(int id) async => await runBusyFuture(_getCourseUnits(id), busyObject: StateObjects.courseUnits); Future _getCourseUnits(int id) async { if (await _statusChecker.checkConnection()) { await _courseService.getCourseUnits(id); } } Future getCourseUnitModules( {required int id, required int index}) async => await runBusyFuture(_getCourseUnitModules(id: id, index: index), busyObject: StateObjects.courseModules); Future _getCourseUnitModules( {required int id, required int index}) async { if (await _statusChecker.checkConnection()) { await _courseService.getCourseUnitModule(id: id, index: index); } } }