From f56615451ef652e5af74194c5120a9fec4ba647f Mon Sep 17 00:00:00 2001 From: ElPoyo Date: Tue, 26 May 2026 13:57:14 +0200 Subject: [PATCH] =?UTF-8?q?perf:=20suppression=20du=20blocage=20d'authenti?= =?UTF-8?q?fication=20au=20d=C3=A9marrage=20et=20chargement=20non=20bloqua?= =?UTF-8?q?nt=20de=20l'utilisateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- em2rp/lib/main.dart | 30 +++++++++-------------------- em2rp/lib/utils/app_start_gate.dart | 10 ++++++++++ 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/em2rp/lib/main.dart b/em2rp/lib/main.dart index 6d9e65b..a448251 100644 --- a/em2rp/lib/main.dart +++ b/em2rp/lib/main.dart @@ -105,28 +105,16 @@ class _MyAppState extends State { 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( - Env.devAdminEmail, - Env.devAdminPassword, - ); - unawaited( - localAuthProvider.loadUserData().catchError((e) { - if (kDebugMode) debugPrint('Dev user bootstrap failed: $e'); + localAuthProvider.signInWithEmailAndPassword( + Env.devAdminEmail, + Env.devAdminPassword, + ).then((_) { + return localAuthProvider.loadUserData(); + }).catchError((e) { + if (kDebugMode) debugPrint('Dev auto-login failed: $e'); }), ); } diff --git a/em2rp/lib/utils/app_start_gate.dart b/em2rp/lib/utils/app_start_gate.dart index d473599..400fc2b 100644 --- a/em2rp/lib/utils/app_start_gate.dart +++ b/em2rp/lib/utils/app_start_gate.dart @@ -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().loadUserData().catchError((e) { + debugPrint('[AppStartGate] User data bootstrap failed: $e'); + }), + ); + if (fragment.isNotEmpty && fragment != '/' && fragment != '/calendar') { Navigator.of(context).pushReplacementNamed(fragment); } else {