Phase 1 du MVP : schéma SQLite porté depuis le prototype web, seed des règles/récompenses, flux d'onboarding en 4 étapes et écran d'accueil minimal. Co-authored-by: Cursor <cursoragent@cursor.com>
30 lines
694 B
Dart
30 lines
694 B
Dart
import 'package:bcrypt/bcrypt.dart';
|
|
|
|
import '../database/app_database.dart';
|
|
|
|
class OnboardingRepository {
|
|
OnboardingRepository(this._db);
|
|
|
|
final AppDatabase _db;
|
|
|
|
Future<bool> isComplete() => _db.isOnboardingComplete();
|
|
|
|
Future<void> finish({
|
|
required String childName,
|
|
required String color,
|
|
required String pin,
|
|
required bool importDefaultRules,
|
|
}) async {
|
|
await _db.transaction(() async {
|
|
await _db.insertChild(prenom: childName.trim(), couleur: color);
|
|
await _db.setPinHash(BCrypt.hashpw(pin, BCrypt.gensalt()));
|
|
|
|
if (importDefaultRules) {
|
|
await _db.importDefaultPack();
|
|
}
|
|
|
|
await _db.completeOnboarding();
|
|
});
|
|
}
|
|
}
|