feat: User/onboarding persistence — save to DB, load on startup [AITM-233]

This commit is contained in:
TrochtaOndrej
2026-03-18 21:12:33 +01:00
parent d7eb04b788
commit 23fcc86fd2
3 changed files with 15 additions and 0 deletions
+1
View File
@@ -4,4 +4,5 @@ abstract final class Routes {
static const pet = '/pet';
static const zen = '/zen';
static const profile = '/profile';
static const onboarding = '/onboarding';
}
@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../domain/entities/pet_state_entity.dart';
import '../../../domain/entities/pet_type.dart';
import '../../../domain/entities/user_entity.dart';
import 'task_providers.dart';
/// Pet mood states.
enum PetMood {
@@ -2,8 +2,10 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../data/db/app_database.dart';
import '../../../data/repositories/task_repository.dart';
import '../../../data/repositories/user_repository.dart';
import '../../../domain/entities/task_entity.dart';
import '../../../domain/entities/task_status.dart';
import '../../../domain/entities/user_entity.dart';
// ── Infrastructure providers ──
@@ -19,6 +21,17 @@ final taskRepositoryProvider = Provider<TaskRepository>((ref) {
return TaskRepository(ref.watch(appDatabaseProvider));
});
/// User repository backed by Drift.
final userRepositoryProvider = Provider<UserRepository>((ref) {
return UserRepository(ref.watch(appDatabaseProvider));
});
/// Current user loaded from the database. Null if onboarding not complete.
final currentUserProvider = FutureProvider<UserEntity?>((ref) {
final repo = ref.watch(userRepositoryProvider);
return repo.getCurrentUser();
});
// ── Task list (reactive stream from DB) ──
const _userId = 'user-1';