bouton qui fonctionne

This commit is contained in:
2025-05-28 23:21:33 +02:00
parent b80a6d2623
commit 77d0d5cc81

View File

@ -106,6 +106,25 @@ class EventDetails extends StatelessWidget {
.collection('events')
.doc(event.id)
.update({'status': eventStatusToString(newStatus)});
// Recharge l'événement depuis Firestore et notifie le parent
final snap = await FirebaseFirestore.instance
.collection('events')
.doc(event.id)
.get();
final updatedEvent =
EventModel.fromMap(snap.data()!, event.id);
onSelectEvent(updatedEvent,
selectedDate ?? updatedEvent.startDateTime);
// Recharge la liste des événements pour mettre à jour la vue calendrier
final localUserProvider =
Provider.of<LocalUserProvider>(context, listen: false);
final userId = localUserProvider.currentUser?.uid;
final canViewAll =
localUserProvider.hasPermission('view_all_users');
if (userId != null) {
await Provider.of<EventProvider>(context, listen: false)
.loadUserEvents(userId, canViewAllEvents: canViewAll);
}
},
),
),
@ -628,44 +647,43 @@ class _FirestoreStatusButton extends StatefulWidget {
final String eventId;
final EventStatus currentStatus;
final Future<void> Function(EventStatus) onStatusChanged;
const _FirestoreStatusButton(
{required this.eventId,
const _FirestoreStatusButton({
required this.eventId,
required this.currentStatus,
required this.onStatusChanged});
required this.onStatusChanged,
});
@override
State<_FirestoreStatusButton> createState() => _FirestoreStatusButtonState();
}
class _FirestoreStatusButtonState extends State<_FirestoreStatusButton> {
late EventStatus _status;
bool _loading = false;
@override
void initState() {
super.initState();
_status = widget.currentStatus;
Future<void> changerStatut(EventStatus nouveau) async {
if (widget.currentStatus == nouveau) return;
setState(() => _loading = true);
await widget.onStatusChanged(nouveau);
setState(() => _loading = false);
}
Future<void> changerStatut(EventStatus nouveau) async {
if (_status == nouveau) return;
setState(() => _loading = true);
await FirebaseFirestore.instance
.collection('events')
.doc(widget.eventId)
.update({'status': eventStatusToString(nouveau)});
setState(() {
_status = nouveau;
_loading = false;
});
@override
void didUpdateWidget(covariant _FirestoreStatusButton oldWidget) {
super.didUpdateWidget(oldWidget);
// Si l'événement change, on arrête le loading (sécurité UX)
if (oldWidget.eventId != widget.eventId ||
oldWidget.currentStatus != widget.currentStatus) {
if (_loading) setState(() => _loading = false);
}
}
@override
Widget build(BuildContext context) {
final status = widget.currentStatus;
String texte;
Color couleurFond;
List<Widget> enfants = [];
switch (_status) {
switch (status) {
case EventStatus.waitingForApproval:
texte = "En Attente";
couleurFond = Colors.yellow.shade600;