Files
trainhub-flutter/lib/presentation/home/home_controller.dart
Kazimierz Ciołek 782986a632 Initial commit
2026-02-19 02:49:29 +01:00

33 lines
1.2 KiB
Dart

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<HomeState> build() async {
final ProgramRepository programRepo = getIt<ProgramRepository>();
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<void> refresh() async {
state = const AsyncValue.loading();
state = await AsyncValue.guard(() => build());
}
}