perf: suppression du blocage d'authentification au démarrage et chargement non bloquant de l'utilisateur

This commit is contained in:
ElPoyo
2026-05-26 13:57:14 +02:00
parent 845b6e91d2
commit f56615451e
2 changed files with 19 additions and 21 deletions
+9 -21
View File
@@ -105,28 +105,16 @@ class _MyAppState extends State<MyApp> {
await initializer.initialize(); await initializer.initialize();
// Attendre la première valeur d'authentification avant toute décision // Lancer la connexion automatique en dev sans bloquer le démarrage initial
// de navigation, afin d'éviter un flash de la page login. if (Env.isDevelopment && FirebaseAuth.instance.currentUser == null) {
await FirebaseAuth.instance.authStateChanges().first;
if (FirebaseAuth.instance.currentUser != null) {
unawaited( unawaited(
localAuthProvider.loadUserData().catchError((e) { localAuthProvider.signInWithEmailAndPassword(
if (kDebugMode) debugPrint('User data bootstrap failed: $e'); Env.devAdminEmail,
}), Env.devAdminPassword,
); ).then((_) {
return; return localAuthProvider.loadUserData();
} }).catchError((e) {
if (kDebugMode) debugPrint('Dev auto-login failed: $e');
// En développement, on garde la connexion automatique existante.
if (Env.isDevelopment) {
await localAuthProvider.signInWithEmailAndPassword(
Env.devAdminEmail,
Env.devAdminPassword,
);
unawaited(
localAuthProvider.loadUserData().catchError((e) {
if (kDebugMode) debugPrint('Dev user bootstrap failed: $e');
}), }),
); );
} }
+10
View File
@@ -1,8 +1,11 @@
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'dart:async';
import '../views/login_page.dart'; import '../views/login_page.dart';
import '../utils/colors.dart'; import '../utils/colors.dart';
import '../providers/local_user_provider.dart';
/// Gate de démarrage qui attend la restauration Firebase Auth avant /// Gate de démarrage qui attend la restauration Firebase Auth avant
/// d'afficher soit le contenu connecté, soit la page de connexion. /// d'afficher soit le contenu connecté, soit la page de connexion.
@@ -82,6 +85,13 @@ class _AuthenticatedBootstrapState extends State<_AuthenticatedBootstrap> {
if (!mounted) return; 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') { if (fragment.isNotEmpty && fragment != '/' && fragment != '/calendar') {
Navigator.of(context).pushReplacementNamed(fragment); Navigator.of(context).pushReplacementNamed(fragment);
} else { } else {