perf: suppression du blocage d'authentification au démarrage et chargement non bloquant de l'utilisateur
This commit is contained in:
+9
-21
@@ -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');
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user