refactoring

This commit is contained in:
dahoud
2026-03-31 09:14:47 +00:00
parent 9bfffeeebe
commit 5383df6dcb
200 changed files with 11192 additions and 7063 deletions

View File

@@ -22,21 +22,23 @@ final _getIt = GetIt.instance;
/// Wrapper qui fournit le BLoC à la page des membres
class MembersPageWrapper extends StatelessWidget {
const MembersPageWrapper({super.key});
final String? organisationId;
const MembersPageWrapper({super.key, this.organisationId});
@override
Widget build(BuildContext context) {
AppLogger.info('MembersPageWrapper: Création du BlocProvider');
return BlocProvider<MembresBloc>(
create: (context) {
AppLogger.info('MembresPageWrapper: Initialisation du MembresBloc');
final bloc = _getIt<MembresBloc>();
// Charger les membres au démarrage
bloc.add(const LoadMembres());
bloc.add(LoadMembres(organisationId: organisationId));
return bloc;
},
child: const MembersPageConnected(),
child: MembersPageConnected(organisationId: organisationId),
);
}
}
@@ -45,15 +47,59 @@ class MembersPageWrapper extends StatelessWidget {
///
/// Cette page gère les états du BLoC et affiche l'UI appropriée
class MembersPageConnected extends StatelessWidget {
const MembersPageConnected({super.key});
final String? organisationId;
const MembersPageConnected({super.key, this.organisationId});
@override
Widget build(BuildContext context) {
return BlocListener<MembresBloc, MembresState>(
listener: (context, state) {
// Après création : recharger la liste
// Après création : afficher le mot de passe temporaire si disponible, puis recharger
if (state is MembreCreated) {
context.read<MembresBloc>().add(const LoadMembres(refresh: true));
final motDePasse = state.membre.motDePasseTemporaire;
if (motDePasse != null && motDePasse.isNotEmpty) {
showDialog<void>(
context: context,
barrierDismissible: false,
builder: (_) => AlertDialog(
title: const Text('Compte créé avec succès'),
content: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Le membre ${state.membre.nomComplet} a été créé.'),
const SizedBox(height: 12),
const Text(
'Mot de passe temporaire :',
style: TextStyle(fontWeight: FontWeight.bold),
),
const SizedBox(height: 8),
SelectableText(
motDePasse,
style: const TextStyle(
fontSize: 18,
fontFamily: 'monospace',
letterSpacing: 2,
),
),
const SizedBox(height: 12),
const Text(
'Communiquez ce mot de passe au membre. Il devra le changer à sa première connexion.',
style: TextStyle(fontSize: 12, color: Colors.grey),
),
],
),
actions: [
ElevatedButton(
onPressed: () => Navigator.of(_).pop(),
child: const Text('OK'),
),
],
),
);
}
context.read<MembresBloc>().add(LoadMembres(refresh: true, organisationId: organisationId));
}
// Gestion des erreurs avec SnackBar
@@ -67,7 +113,7 @@ class MembersPageConnected extends StatelessWidget {
label: 'Réessayer',
textColor: Colors.white,
onPressed: () {
context.read<MembresBloc>().add(const LoadMembres());
context.read<MembresBloc>().add(LoadMembres(organisationId: organisationId));
},
),
),
@@ -134,19 +180,23 @@ class MembersPageConnected extends StatelessWidget {
totalPages: state.totalPages,
onPageChanged: (newPage, recherche) {
AppLogger.userAction('Load page', data: {'page': newPage});
context.read<MembresBloc>().add(LoadMembres(page: newPage, recherche: recherche));
context.read<MembresBloc>().add(LoadMembres(page: newPage, recherche: recherche, organisationId: organisationId));
},
onRefresh: () {
AppLogger.userAction('Refresh membres');
context.read<MembresBloc>().add(const LoadMembres(refresh: true));
context.read<MembresBloc>().add(LoadMembres(refresh: true, organisationId: organisationId));
},
onSearch: (query) {
context.read<MembresBloc>().add(LoadMembres(page: 0, recherche: query));
context.read<MembresBloc>().add(LoadMembres(page: 0, recherche: query, organisationId: organisationId));
},
onAddMember: () async {
final bloc = context.read<MembresBloc>();
await showDialog<void>(
context: context,
builder: (_) => const AddMemberDialog(),
builder: (_) => BlocProvider.value(
value: bloc,
child: const AddMemberDialog(),
),
);
},
);
@@ -160,7 +210,7 @@ class MembersPageConnected extends StatelessWidget {
child: NetworkErrorWidget(
onRetry: () {
AppLogger.userAction('Retry load membres after network error');
context.read<MembresBloc>().add(const LoadMembres());
context.read<MembresBloc>().add(LoadMembres(organisationId: organisationId));
},
),
);
@@ -175,7 +225,7 @@ class MembersPageConnected extends StatelessWidget {
message: state.message,
onRetry: () {
AppLogger.userAction('Retry load membres after error');
context.read<MembresBloc>().add(const LoadMembres());
context.read<MembresBloc>().add(LoadMembres(organisationId: organisationId));
},
),
);