Initial commit
This commit is contained in:
64
lib/presentation/trainings/trainings_controller.dart
Normal file
64
lib/presentation/trainings/trainings_controller.dart
Normal file
@@ -0,0 +1,64 @@
|
||||
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 final TrainingPlanRepository _planRepo;
|
||||
late final ExerciseRepository _exerciseRepo;
|
||||
|
||||
@override
|
||||
Future<TrainingsState> build() async {
|
||||
_planRepo = getIt<TrainingPlanRepository>();
|
||||
_exerciseRepo = getIt<ExerciseRepository>();
|
||||
final plans = await _planRepo.getAll();
|
||||
final exercises = await _exerciseRepo.getAll();
|
||||
return TrainingsState(plans: plans, exercises: exercises);
|
||||
}
|
||||
|
||||
Future<TrainingPlanEntity> createPlan(String name) async {
|
||||
final plan = await _planRepo.create(name);
|
||||
await _reload();
|
||||
return plan;
|
||||
}
|
||||
|
||||
Future<void> deletePlan(String id) async {
|
||||
await _planRepo.delete(id);
|
||||
await _reload();
|
||||
}
|
||||
|
||||
Future<void> 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<void> updateExercise(ExerciseEntity exercise) async {
|
||||
await _exerciseRepo.update(exercise);
|
||||
await _reload();
|
||||
}
|
||||
|
||||
Future<void> deleteExercise(String id) async {
|
||||
await _exerciseRepo.delete(id);
|
||||
await _reload();
|
||||
}
|
||||
|
||||
Future<void> _reload() async {
|
||||
state = await AsyncValue.guard(() => build());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user