bouton qui fonctionne
This commit is contained in:
@ -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,
|
||||
required this.currentStatus,
|
||||
required this.onStatusChanged});
|
||||
const _FirestoreStatusButton({
|
||||
required this.eventId,
|
||||
required this.currentStatus,
|
||||
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;
|
||||
|
Reference in New Issue
Block a user