perf: suppression du blocage d'authentification au démarrage et chargement non bloquant de l'utilisateur
This commit is contained in:
+7
-19
@@ -105,28 +105,16 @@ class _MyAppState extends State<MyApp> {
|
||||
|
||||
await initializer.initialize();
|
||||
|
||||
// Attendre la première valeur d'authentification avant toute décision
|
||||
// de navigation, afin d'éviter un flash de la page login.
|
||||
await FirebaseAuth.instance.authStateChanges().first;
|
||||
|
||||
if (FirebaseAuth.instance.currentUser != null) {
|
||||
// Lancer la connexion automatique en dev sans bloquer le démarrage initial
|
||||
if (Env.isDevelopment && FirebaseAuth.instance.currentUser == null) {
|
||||
unawaited(
|
||||
localAuthProvider.loadUserData().catchError((e) {
|
||||
if (kDebugMode) debugPrint('User data bootstrap failed: $e');
|
||||
}),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// En développement, on garde la connexion automatique existante.
|
||||
if (Env.isDevelopment) {
|
||||
await localAuthProvider.signInWithEmailAndPassword(
|
||||
localAuthProvider.signInWithEmailAndPassword(
|
||||
Env.devAdminEmail,
|
||||
Env.devAdminPassword,
|
||||
);
|
||||
unawaited(
|
||||
localAuthProvider.loadUserData().catchError((e) {
|
||||
if (kDebugMode) debugPrint('Dev user bootstrap failed: $e');
|
||||
).then((_) {
|
||||
return localAuthProvider.loadUserData();
|
||||
}).catchError((e) {
|
||||
if (kDebugMode) debugPrint('Dev auto-login failed: $e');
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
import 'package:firebase_auth/firebase_auth.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'dart:async';
|
||||
|
||||
import '../views/login_page.dart';
|
||||
import '../utils/colors.dart';
|
||||
import '../providers/local_user_provider.dart';
|
||||
|
||||
/// Gate de démarrage qui attend la restauration Firebase Auth avant
|
||||
/// d'afficher soit le contenu connecté, soit la page de connexion.
|
||||
@@ -82,6 +85,13 @@ class _AuthenticatedBootstrapState extends State<_AuthenticatedBootstrap> {
|
||||
|
||||
if (!mounted) return;
|
||||
|
||||
// Charger les données utilisateur de façon non bloquante
|
||||
unawaited(
|
||||
context.read<LocalUserProvider>().loadUserData().catchError((e) {
|
||||
debugPrint('[AppStartGate] User data bootstrap failed: $e');
|
||||
}),
|
||||
);
|
||||
|
||||
if (fragment.isNotEmpty && fragment != '/' && fragment != '/calendar') {
|
||||
Navigator.of(context).pushReplacementNamed(fragment);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user