bouton qui fonctionne
This commit is contained in:
@ -106,6 +106,25 @@ class EventDetails extends StatelessWidget {
|
|||||||
.collection('events')
|
.collection('events')
|
||||||
.doc(event.id)
|
.doc(event.id)
|
||||||
.update({'status': eventStatusToString(newStatus)});
|
.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 String eventId;
|
||||||
final EventStatus currentStatus;
|
final EventStatus currentStatus;
|
||||||
final Future<void> Function(EventStatus) onStatusChanged;
|
final Future<void> Function(EventStatus) onStatusChanged;
|
||||||
const _FirestoreStatusButton(
|
const _FirestoreStatusButton({
|
||||||
{required this.eventId,
|
required this.eventId,
|
||||||
required this.currentStatus,
|
required this.currentStatus,
|
||||||
required this.onStatusChanged});
|
required this.onStatusChanged,
|
||||||
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<_FirestoreStatusButton> createState() => _FirestoreStatusButtonState();
|
State<_FirestoreStatusButton> createState() => _FirestoreStatusButtonState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _FirestoreStatusButtonState extends State<_FirestoreStatusButton> {
|
class _FirestoreStatusButtonState extends State<_FirestoreStatusButton> {
|
||||||
late EventStatus _status;
|
|
||||||
bool _loading = false;
|
bool _loading = false;
|
||||||
|
|
||||||
@override
|
Future<void> changerStatut(EventStatus nouveau) async {
|
||||||
void initState() {
|
if (widget.currentStatus == nouveau) return;
|
||||||
super.initState();
|
setState(() => _loading = true);
|
||||||
_status = widget.currentStatus;
|
await widget.onStatusChanged(nouveau);
|
||||||
|
setState(() => _loading = false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> changerStatut(EventStatus nouveau) async {
|
@override
|
||||||
if (_status == nouveau) return;
|
void didUpdateWidget(covariant _FirestoreStatusButton oldWidget) {
|
||||||
setState(() => _loading = true);
|
super.didUpdateWidget(oldWidget);
|
||||||
await FirebaseFirestore.instance
|
// Si l'événement change, on arrête le loading (sécurité UX)
|
||||||
.collection('events')
|
if (oldWidget.eventId != widget.eventId ||
|
||||||
.doc(widget.eventId)
|
oldWidget.currentStatus != widget.currentStatus) {
|
||||||
.update({'status': eventStatusToString(nouveau)});
|
if (_loading) setState(() => _loading = false);
|
||||||
setState(() {
|
}
|
||||||
_status = nouveau;
|
|
||||||
_loading = false;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final status = widget.currentStatus;
|
||||||
String texte;
|
String texte;
|
||||||
Color couleurFond;
|
Color couleurFond;
|
||||||
List<Widget> enfants = [];
|
List<Widget> enfants = [];
|
||||||
switch (_status) {
|
switch (status) {
|
||||||
case EventStatus.waitingForApproval:
|
case EventStatus.waitingForApproval:
|
||||||
texte = "En Attente";
|
texte = "En Attente";
|
||||||
couleurFond = Colors.yellow.shade600;
|
couleurFond = Colors.yellow.shade600;
|
||||||
|
Reference in New Issue
Block a user