feat(unionflow): ajout Spec-Kit, constitution, mission mutuelles
- Config Spec-Kit pour Spec-Driven Development - CONSTITUTION.md + .specify/memory/constitution.md - Commandes Cursor /speckit.*, règles projet - Mission: associations + mutuelles d'épargne et de financement - .gitignore: versionner config spec-kit unionflow Made-with: Cursor
This commit is contained in:
120
unionflow/unionflow-mobile-apps/lib/core/di/app_di.dart
Normal file
120
unionflow/unionflow-mobile-apps/lib/core/di/app_di.dart
Normal file
@@ -0,0 +1,120 @@
|
||||
/// Configuration globale de l'injection de dépendances
|
||||
library app_di;
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import '../network/dio_client.dart';
|
||||
import '../network/network_info.dart';
|
||||
import '../../features/organizations/di/organizations_di.dart';
|
||||
import '../../features/members/di/membres_di.dart';
|
||||
import '../../features/events/di/evenements_di.dart';
|
||||
import '../../features/contributions/di/contributions_di.dart';
|
||||
import '../../features/adhesions/di/adhesions_di.dart';
|
||||
import '../../features/solidarity/di/solidarity_di.dart';
|
||||
import '../../features/admin/di/admin_di.dart';
|
||||
import '../../features/dashboard/di/dashboard_di.dart';
|
||||
import '../../features/profile/di/profile_di.dart';
|
||||
import '../../features/notifications/di/notifications_di.dart';
|
||||
import '../../features/reports/di/reports_di.dart';
|
||||
|
||||
/// Gestionnaire global des dépendances
|
||||
class AppDI {
|
||||
static final GetIt _getIt = GetIt.instance;
|
||||
|
||||
/// Initialise toutes les dépendances de l'application
|
||||
static Future<void> initialize() async {
|
||||
// Configuration du client HTTP
|
||||
await _setupNetworking();
|
||||
|
||||
// Configuration des modules
|
||||
await _setupModules();
|
||||
}
|
||||
|
||||
/// Configure les services réseau
|
||||
static Future<void> _setupNetworking() async {
|
||||
// Client Dio
|
||||
final dioClient = DioClient();
|
||||
_getIt.registerSingleton<DioClient>(dioClient);
|
||||
_getIt.registerSingleton<Dio>(dioClient.dio);
|
||||
|
||||
// Network Info (pour l'instant, on simule toujours connecté)
|
||||
_getIt.registerLazySingleton<NetworkInfo>(
|
||||
() => _MockNetworkInfo(),
|
||||
);
|
||||
}
|
||||
|
||||
/// Configure tous les modules de l'application
|
||||
static Future<void> _setupModules() async {
|
||||
// Module Organizations
|
||||
OrganizationsDI.registerDependencies();
|
||||
|
||||
// Module Membres
|
||||
MembresDI.register();
|
||||
|
||||
// Module Événements
|
||||
EvenementsDI.register();
|
||||
|
||||
// Module Contributions
|
||||
registerCotisationsDependencies(_getIt);
|
||||
|
||||
// Module Adhésions
|
||||
registerAdhesionsDependencies(_getIt);
|
||||
|
||||
// Module Solidarité (demandes d'aide)
|
||||
registerSolidarityDependencies(_getIt);
|
||||
|
||||
// Module Admin (gestion utilisateurs SUPER_ADMIN)
|
||||
registerAdminDependencies(_getIt);
|
||||
|
||||
// Module Dashboard
|
||||
DashboardDI.registerDependencies();
|
||||
|
||||
// Module Profil utilisateur
|
||||
ProfileDI.register();
|
||||
|
||||
// Module Notifications
|
||||
NotificationsDI.register();
|
||||
|
||||
// Module Rapports & Analytics
|
||||
ReportsDI.register();
|
||||
}
|
||||
|
||||
/// Nettoie toutes les dépendances
|
||||
static Future<void> dispose() async {
|
||||
// Nettoyer les modules
|
||||
OrganizationsDI.unregisterDependencies();
|
||||
MembresDI.unregister();
|
||||
EvenementsDI.unregister();
|
||||
|
||||
// Nettoyer les services globaux
|
||||
if (_getIt.isRegistered<Dio>()) {
|
||||
_getIt.unregister<Dio>();
|
||||
}
|
||||
if (_getIt.isRegistered<DioClient>()) {
|
||||
_getIt.unregister<DioClient>();
|
||||
}
|
||||
|
||||
// Reset complet
|
||||
await _getIt.reset();
|
||||
}
|
||||
|
||||
/// Obtient l'instance GetIt
|
||||
static GetIt get instance => _getIt;
|
||||
|
||||
/// Obtient le client Dio
|
||||
static Dio get dio => _getIt<Dio>();
|
||||
|
||||
/// Obtient le client Dio wrapper
|
||||
static DioClient get dioClient => _getIt<DioClient>();
|
||||
|
||||
/// Nettoie toutes les dépendances
|
||||
static Future<void> cleanup() async {
|
||||
await _getIt.reset();
|
||||
}
|
||||
}
|
||||
|
||||
/// Mock de NetworkInfo pour les tests et développement
|
||||
class _MockNetworkInfo implements NetworkInfo {
|
||||
@override
|
||||
Future<bool> get isConnected async => true;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'app_di.dart';
|
||||
|
||||
/// Service locator global - alias pour faciliter l'utilisation
|
||||
final GetIt sl = AppDI.instance;
|
||||
|
||||
/// Initialise toutes les dépendances de l'application
|
||||
Future<void> initializeDependencies() async {
|
||||
await AppDI.initialize();
|
||||
}
|
||||
|
||||
/// Nettoie toutes les dépendances
|
||||
Future<void> cleanupDependencies() async {
|
||||
await AppDI.cleanup();
|
||||
}
|
||||
Reference in New Issue
Block a user