feat: synchronisation mode deconnecte fin chat et stats

This commit is contained in:
2025-08-31 18:21:20 +02:00
parent f5bef999df
commit 96af94ad13
129 changed files with 125731 additions and 110375 deletions

View File

@@ -5,11 +5,14 @@ import 'package:go_router/go_router.dart';
import 'dart:math' as math;
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:hive_flutter/hive_flutter.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:geosector_app/presentation/widgets/custom_button.dart';
import 'package:geosector_app/presentation/widgets/custom_text_field.dart';
import 'package:geosector_app/presentation/widgets/connectivity_indicator.dart';
import 'package:geosector_app/core/services/app_info_service.dart';
import 'package:geosector_app/core/services/hive_service.dart';
import 'package:geosector_app/core/constants/app_keys.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:geosector_app/app.dart'; // Pour accéder aux instances globales
@@ -112,6 +115,50 @@ class _RegisterPageState extends State<RegisterPage> {
void initState() {
super.initState();
// VÉRIFICATION CRITIQUE : S'assurer que Hive est initialisé correctement
// Vérifier la clé 'hive_initialized' dans la box settings
try {
// D'abord vérifier que les boxes sont disponibles
if (!HiveService.instance.areBoxesInitialized()) {
debugPrint('⚠️ RegisterPage: Boxes Hive non initialisées, redirection vers SplashPage');
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) {
context.go('/?action=register');
}
});
return; // IMPORTANT : Arrêter l'exécution du reste de initState
}
// Ensuite vérifier la clé de réinitialisation
if (Hive.isBoxOpen(AppKeys.settingsBoxName)) {
final settingsBox = Hive.box(AppKeys.settingsBoxName);
final isInitialized = settingsBox.get('hive_initialized', defaultValue: false);
if (isInitialized != true) {
debugPrint('⚠️ RegisterPage: Réinitialisation Hive requise (hive_initialized=$isInitialized)');
// Forcer une réinitialisation complète via SplashPage
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) {
context.go('/?action=register');
}
});
return; // IMPORTANT : Arrêter l'exécution du reste de initState
}
debugPrint('✅ RegisterPage: Hive correctement initialisé');
}
} catch (e) {
debugPrint('❌ RegisterPage: Erreur lors de la vérification de hive_initialized: $e');
// En cas d'erreur, forcer la réinitialisation
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) {
context.go('/?action=register');
}
});
return;
}
// Déterminer si l'application s'exécute sur mobile
_isMobile = !kIsWeb;