refactor: Optimisation de la gestion des événements dans le cache et suppression des appels API redondants
This commit is contained in:
@@ -9,7 +9,6 @@ import 'package:em2rp/services/data_service.dart';
|
||||
import 'package:em2rp/services/api_service.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:em2rp/providers/event_provider.dart';
|
||||
import 'package:em2rp/providers/local_user_provider.dart';
|
||||
|
||||
class EventFormController extends ChangeNotifier {
|
||||
// Controllers
|
||||
@@ -365,15 +364,9 @@ class EventFormController extends ChangeNotifier {
|
||||
|
||||
await EventFormService.updateEvent(updatedEvent);
|
||||
|
||||
// Recharger les événements après modification
|
||||
final localUserProvider = Provider.of<LocalUserProvider>(context, listen: false);
|
||||
// Mettre à jour l'événement dans le cache (au lieu de tout recharger)
|
||||
final eventProvider = Provider.of<EventProvider>(context, listen: false);
|
||||
final userId = localUserProvider.uid;
|
||||
final canViewAllEvents = localUserProvider.hasPermission('view_all_events');
|
||||
|
||||
if (userId != null) {
|
||||
await eventProvider.loadUserEvents(userId, canViewAllEvents: canViewAllEvents);
|
||||
}
|
||||
await eventProvider.updateEvent(updatedEvent);
|
||||
|
||||
_success = "Événement modifié avec succès !";
|
||||
} else {
|
||||
@@ -407,23 +400,22 @@ class EventFormController extends ChangeNotifier {
|
||||
|
||||
final eventId = await EventFormService.createEvent(newEvent);
|
||||
|
||||
// Créer l'événement avec l'ID retourné
|
||||
EventModel createdEvent = newEvent.copyWith(id: eventId);
|
||||
|
||||
// Déplacer et mettre à jour les fichiers uniquement s'il y en a
|
||||
if (_uploadedFiles.isNotEmpty) {
|
||||
final newFiles = await EventFormService.moveFilesToEvent(_uploadedFiles, eventId);
|
||||
if (newFiles.isNotEmpty) {
|
||||
await EventFormService.updateEventDocuments(eventId, newFiles);
|
||||
// Mettre à jour l'événement avec les nouvelles URLs
|
||||
createdEvent = createdEvent.copyWith(documents: newFiles);
|
||||
}
|
||||
}
|
||||
|
||||
// Reload events
|
||||
final localUserProvider = Provider.of<LocalUserProvider>(context, listen: false);
|
||||
// Ajouter l'événement au cache
|
||||
final eventProvider = Provider.of<EventProvider>(context, listen: false);
|
||||
final userId = localUserProvider.uid;
|
||||
final canViewAllEvents = localUserProvider.hasPermission('view_all_events');
|
||||
|
||||
if (userId != null) {
|
||||
await eventProvider.loadUserEvents(userId, canViewAllEvents: canViewAllEvents);
|
||||
}
|
||||
await eventProvider.addEvent(createdEvent);
|
||||
|
||||
_success = "Événement créé avec succès !";
|
||||
}
|
||||
@@ -448,19 +440,9 @@ class EventFormController extends ChangeNotifier {
|
||||
notifyListeners();
|
||||
|
||||
try {
|
||||
// Supprimer l'événement via l'API
|
||||
final dataService = DataService(FirebaseFunctionsApiService());
|
||||
await dataService.deleteEvent(eventId);
|
||||
|
||||
// Recharger la liste des événements
|
||||
final localUserProvider = Provider.of<LocalUserProvider>(context, listen: false);
|
||||
// Supprimer l'événement via le provider (qui appelle l'API et met à jour le cache)
|
||||
final eventProvider = Provider.of<EventProvider>(context, listen: false);
|
||||
final userId = localUserProvider.uid;
|
||||
final canViewAllEvents = localUserProvider.hasPermission('view_all_events');
|
||||
|
||||
if (userId != null) {
|
||||
await eventProvider.loadUserEvents(userId, canViewAllEvents: canViewAllEvents);
|
||||
}
|
||||
await eventProvider.deleteEvent(eventId);
|
||||
|
||||
_success = "Événement supprimé avec succès !";
|
||||
notifyListeners();
|
||||
|
||||
Reference in New Issue
Block a user