import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:trainhub_flutter/injection.dart'; import 'package:trainhub_flutter/domain/entities/exercise.dart'; import 'package:trainhub_flutter/domain/entities/training_plan.dart'; import 'package:trainhub_flutter/domain/repositories/exercise_repository.dart'; import 'package:trainhub_flutter/domain/repositories/training_plan_repository.dart'; import 'package:trainhub_flutter/presentation/trainings/trainings_state.dart'; part 'trainings_controller.g.dart'; @riverpod class TrainingsController extends _$TrainingsController { late TrainingPlanRepository _planRepo; late ExerciseRepository _exerciseRepo; @override Future build() async { _planRepo = getIt(); _exerciseRepo = getIt(); final plans = await _planRepo.getAll(); final exercises = await _exerciseRepo.getAll(); return TrainingsState(plans: plans, exercises: exercises); } Future createPlan(String name) async { final plan = await _planRepo.create(name); await _reload(); return plan; } Future deletePlan(String id) async { await _planRepo.delete(id); await _reload(); } Future addExercise({ required String name, String? instructions, String? tags, String? videoUrl, }) async { await _exerciseRepo.create( name: name, instructions: instructions, tags: tags, videoUrl: videoUrl, ); await _reload(); } Future updateExercise(ExerciseEntity exercise) async { await _exerciseRepo.update(exercise); await _reload(); } Future deleteExercise(String id) async { await _exerciseRepo.delete(id); await _reload(); } Future _reload() async { state = await AsyncValue.guard(() => build()); } }