/// Module de Dependency Injection pour les membres
library membres_di;

import 'package:get_it/get_it.dart';
import 'package:dio/dio.dart';
import '../data/repositories/membre_repository_impl.dart';
import '../bloc/membres_bloc.dart';

/// Configuration de l'injection de dépendances pour le module Membres
class MembresDI {
  static final GetIt _getIt = GetIt.instance;

  /// Enregistre toutes les dépendances du module Membres
  static void register() {
    // Repository
    _getIt.registerLazySingleton<MembreRepository>(
      () => MembreRepositoryImpl(_getIt<Dio>()),
    );

    // BLoC - Factory pour créer une nouvelle instance à chaque fois
    _getIt.registerFactory<MembresBloc>(
      () => MembresBloc(_getIt<MembreRepository>()),
    );
  }

  /// Désenregistre toutes les dépendances (pour les tests)
  static void unregister() {
    if (_getIt.isRegistered<MembresBloc>()) {
      _getIt.unregister<MembresBloc>();
    }
    if (_getIt.isRegistered<MembreRepository>()) {
      _getIt.unregister<MembreRepository>();
    }
  }
}

