Initial commit

This commit is contained in:
Kazimierz Ciołek
2026-02-19 02:49:29 +01:00
commit 782986a632
148 changed files with 29230 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
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());
}
}