From 94aaaf69639ce9f3a688c6657d5a50afde44e032 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Thu, 13 Jun 2024 16:25:38 -0400 Subject: [PATCH] update room capacity when going between different rooms --- .../p_class_widgets/room_capacity_button.dart | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/pangea/pages/class_settings/p_class_widgets/room_capacity_button.dart b/lib/pangea/pages/class_settings/p_class_widgets/room_capacity_button.dart index 34ccc01a9..ca876fae8 100644 --- a/lib/pangea/pages/class_settings/p_class_widgets/room_capacity_button.dart +++ b/lib/pangea/pages/class_settings/p_class_widgets/room_capacity_button.dart @@ -20,8 +20,6 @@ class RoomCapacityButton extends StatefulWidget { } class RoomCapacityButtonState extends State { - Room? room; - ChatDetailsController? controller; int? capacity; String? nonAdmins; @@ -30,10 +28,8 @@ class RoomCapacityButtonState extends State { @override void initState() { super.initState(); - room = widget.room; - controller = widget.controller; - capacity = room?.capacity; - room?.numNonAdmins.then( + capacity = widget.room?.capacity; + widget.room?.numNonAdmins.then( (value) => setState(() { nonAdmins = value.toString(); overCapacity(); @@ -41,8 +37,22 @@ class RoomCapacityButtonState extends State { ); } + @override + void didUpdateWidget(RoomCapacityButton oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.room != widget.room) { + capacity = widget.room?.capacity; + widget.room?.numNonAdmins.then( + (value) => setState(() { + nonAdmins = value.toString(); + overCapacity(); + }), + ); + } + } + Future overCapacity() async { - if ((room?.isRoomAdmin ?? false) && + if ((widget.room?.isRoomAdmin ?? false) && capacity != null && nonAdmins != null && int.parse(nonAdmins!) > capacity!) { @@ -63,7 +73,7 @@ class RoomCapacityButtonState extends State { children: [ ListTile( onTap: () => - ((room?.isRoomAdmin ?? true) ? (setRoomCapacity()) : null), + ((widget.room?.isRoomAdmin ?? true) ? (setRoomCapacity()) : null), leading: CircleAvatar( backgroundColor: Theme.of(context).scaffoldBackgroundColor, foregroundColor: iconColor, @@ -128,8 +138,8 @@ class RoomCapacityButtonState extends State { final newCapacity = int.parse(input.first); final success = await showFutureLoadingDialog( context: context, - future: () => ((room != null) - ? (room!.updateRoomCapacity( + future: () => ((widget.room != null) + ? (widget.room!.updateRoomCapacity( capacity = newCapacity, )) : setCapacity(newCapacity)),