From fb740d97a34f7a6d8f5274c1d52e6ae0768dd4d8 Mon Sep 17 00:00:00 2001 From: ElPoyo Date: Tue, 26 May 2026 20:34:46 +0200 Subject: [PATCH] feat: implement authentication flow with AppStartGate, AuthGuard, and calendar page initialization --- .gitignore | 1 + em2rp/lib/utils/app_start_gate.dart | 44 +++----------------------- em2rp/lib/utils/auth_guard_widget.dart | 8 ++--- em2rp/lib/views/calendar_page.dart | 7 ++-- 4 files changed, 10 insertions(+), 50 deletions(-) diff --git a/.gitignore b/.gitignore index e1616bd..12a282b 100644 --- a/.gitignore +++ b/.gitignore @@ -149,3 +149,4 @@ app.*.symbols .python-version .gclient_previous_custom_vars .gclient_previous_sync_commits +em2rp/lib/config/env.dart diff --git a/em2rp/lib/utils/app_start_gate.dart b/em2rp/lib/utils/app_start_gate.dart index 400fc2b..6366d6e 100644 --- a/em2rp/lib/utils/app_start_gate.dart +++ b/em2rp/lib/utils/app_start_gate.dart @@ -4,8 +4,9 @@ import 'package:provider/provider.dart'; import 'dart:async'; import '../views/login_page.dart'; -import '../utils/colors.dart'; + import '../providers/local_user_provider.dart'; +import '../views/widgets/common/startup_splash_screen.dart'; /// Gate de démarrage qui attend la restauration Firebase Auth avant /// d'afficher soit le contenu connecté, soit la page de connexion. @@ -43,14 +44,14 @@ class AppStartGate extends StatelessWidget { stream: safeAuthStream, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { - return const _StartupSplashScreen(); + return const StartupSplashScreen(); } if (snapshot.hasError) { // En théorie handleError évite d'arriver ici, mais on garde // une protection supplémentaire. debugPrint('[AppStartGate] snapshot error: ${snapshot.error}'); - return const _StartupSplashScreen(message: 'Erreur de connexion'); + return const StartupSplashScreen(message: 'Erreur de connexion'); } if (snapshot.data != null) { @@ -101,44 +102,9 @@ class _AuthenticatedBootstrapState extends State<_AuthenticatedBootstrap> { @override Widget build(BuildContext context) { - return const _StartupSplashScreen(); + return const StartupSplashScreen(); } } -class _StartupSplashScreen extends StatelessWidget { - final String message; - const _StartupSplashScreen({this.message = 'Démarrage...'}); - - @override - Widget build(BuildContext context) { - return Scaffold( - backgroundColor: Colors.white, - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - 'assets/logos/RectangleLogoBlack.png', - width: 160, - height: 160, - fit: BoxFit.contain, - errorBuilder: (context, error, stackTrace) { - return const Icon( - Icons.event_available, - size: 72, - color: AppColors.rouge, - ); - }, - ), - const SizedBox(height: 24), - const CircularProgressIndicator(), - const SizedBox(height: 16), - Text(message), - ], - ), - ), - ); - } -} diff --git a/em2rp/lib/utils/auth_guard_widget.dart b/em2rp/lib/utils/auth_guard_widget.dart index 44fe910..480e012 100644 --- a/em2rp/lib/utils/auth_guard_widget.dart +++ b/em2rp/lib/utils/auth_guard_widget.dart @@ -3,6 +3,7 @@ import 'package:em2rp/views/login_page.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:em2rp/views/widgets/common/startup_splash_screen.dart'; class AuthGuard extends StatelessWidget { final Widget child; @@ -33,12 +34,7 @@ class AuthGuard extends StatelessWidget { return child; } - return const Scaffold( - backgroundColor: Colors.white, - body: Center( - child: CircularProgressIndicator(), - ), - ); + return const StartupSplashScreen(message: 'Chargement du profil...'); } // Si l'utilisateur n'est pas connecté diff --git a/em2rp/lib/views/calendar_page.dart b/em2rp/lib/views/calendar_page.dart index 7c23b75..a2e3359 100644 --- a/em2rp/lib/views/calendar_page.dart +++ b/em2rp/lib/views/calendar_page.dart @@ -7,6 +7,7 @@ import 'package:em2rp/utils/performance_monitor.dart'; import 'package:flutter/material.dart'; import 'package:em2rp/views/widgets/nav/custom_app_bar.dart'; import 'package:em2rp/views/widgets/nav/main_drawer.dart'; +import 'package:em2rp/views/widgets/common/startup_splash_screen.dart'; import 'package:provider/provider.dart'; import 'package:table_calendar/table_calendar.dart'; import 'package:em2rp/models/event_model.dart'; @@ -864,11 +865,7 @@ class _CalendarPageState extends State { } if (eventProvider.isLoading) { - return const Scaffold( - body: Center( - child: CircularProgressIndicator(), - ), - ); + return const StartupSplashScreen(message: 'Chargement des événements...'); } return Scaffold(