import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:trainhub_flutter/injection.dart'; import 'package:trainhub_flutter/domain/repositories/program_repository.dart'; import 'package:trainhub_flutter/presentation/home/home_state.dart'; part 'home_controller.g.dart'; @riverpod class HomeController extends _$HomeController { @override Future build() async { final ProgramRepository programRepo = getIt(); final programs = await programRepo.getAllPrograms(); if (programs.isEmpty) return const HomeState(); final activeProgram = programs.first; final workouts = await programRepo.getWorkouts(activeProgram.id); final completed = workouts.where((w) => w.completed).toList(); final next = workouts.where((w) => !w.completed).firstOrNull; return HomeState( activeProgramName: activeProgram.name, completedWorkouts: completed.length, totalWorkouts: workouts.length, nextWorkoutName: next?.name, recentActivity: completed.reversed.take(5).toList(), ); } Future refresh() async { state = const AsyncValue.loading(); state = await AsyncValue.guard(() => build()); } }