Refactoring

This commit is contained in:
DahoudG
2024-09-02 21:16:31 +00:00
parent ef72a81b64
commit 04f240b521
5 changed files with 145 additions and 42 deletions

View File

@@ -29,6 +29,7 @@ class _EventScreenState extends State<EventScreen> {
@override
void initState() {
super.initState();
// Récupérer la liste des événements à partir de la source de données distante
_eventsFuture = widget.eventRemoteDataSource.getAllEvents();
}
@@ -59,7 +60,6 @@ class _EventScreenState extends State<EventScreen> {
);
if (eventData != null) {
// Appeler l'API pour créer un nouvel événement.
try {
print('Tentative de création d\'un nouvel événement par l\'utilisateur ${widget.userId}');
await widget.eventRemoteDataSource.createEvent(eventData as EventModel);
@@ -104,7 +104,7 @@ class _EventScreenState extends State<EventScreen> {
print('Affichage de l\'événement ${event.id}');
return EventCard(
key: ValueKey(event.id), // Pour une gestion correcte du Key dans l'animation
key: ValueKey(event.id),
eventRemoteDataSource: widget.eventRemoteDataSource,
userId: widget.userId,
eventId: event.id,
@@ -117,7 +117,7 @@ class _EventScreenState extends State<EventScreen> {
eventTitle: event.title,
eventDescription: event.description,
eventImageUrl: event.imageUrl ?? 'lib/assets/images/placeholder.png',
eventStatus: event.status, // Ajouter le statut de l'événement ici
eventStatus: event.status,
reactionsCount: 120, // Exemple de valeur
commentsCount: 45, // Exemple de valeur
sharesCount: 30, // Exemple de valeur
@@ -137,6 +137,7 @@ class _EventScreenState extends State<EventScreen> {
onMoreOptions: () {
print('Affichage des options pour l\'événement ${event.id}');
},
onReopenEvent: () => _onReopenEvent(context, event.id, index),
);
},
);
@@ -150,18 +151,21 @@ class _EventScreenState extends State<EventScreen> {
void _onCloseEvent(BuildContext context, String eventId, int index) async {
try {
print('Tentative de fermeture de l\'événement $eventId');
// Appeler l'API pour fermer l'événement
await widget.eventRemoteDataSource.closeEvent(eventId);
print('Événement fermé avec succès');
// Montrer un message de succès
// Montrer un message de succès AVANT de supprimer l'événement de la liste
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('L\'événement a été fermé avec succès.')),
);
// Actualiser la liste des événements après fermeture avec un effet de fondu
// Supprimez l'événement de la liste après avoir affiché le SnackBar
setState(() {
_eventsFuture.then((events) {
_eventsFuture = _eventsFuture.then((events) {
events.removeAt(index);
return events;
});
});
} catch (e) {
@@ -171,4 +175,46 @@ class _EventScreenState extends State<EventScreen> {
);
}
}
/// Logique pour rouvrir un événement
void _onReopenEvent(BuildContext context, String eventId, int index) async {
try {
print('Tentative de réouverture de l\'événement $eventId');
await widget.eventRemoteDataSource.reopenEvent(eventId);
print('Événement rouvert avec succès');
// Montrer un message de succès
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('L\'événement a été rouvert avec succès.')),
);
// Mettre à jour le statut de l'événement dans la liste des événements
setState(() {
_eventsFuture = _eventsFuture.then((events) {
final updatedEvent = EventModel(
id: events[index].id,
title: events[index].title,
description: events[index].description,
date: events[index].date,
location: events[index].location,
category: events[index].category,
link: events[index].link,
imageUrl: events[index].imageUrl,
creator: events[index].creator,
participants: events[index].participants,
status: 'OPEN', // Mettre à jour le statut à 'OPEN'
);
// Remplacer l'événement dans la liste
events[index] = updatedEvent;
return events;
});
});
} catch (e) {
print('Erreur lors de la réouverture de l\'événement: $e');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Erreur lors de la réouverture de l\'événement : $e')),
);
}
}
}