refactor: Optimisation de la gestion des événements dans le cache et suppression des appels API redondants

This commit is contained in:
ElPoyo
2026-02-18 15:22:14 +01:00
parent bc6d7d4542
commit 506225ac62
4 changed files with 71 additions and 40 deletions

View File

@@ -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();