From 11c986131f93f268ddd9bab9f9f202c1d12b868d Mon Sep 17 00:00:00 2001 From: Kelrap Date: Mon, 10 Jun 2024 09:55:34 -0400 Subject: [PATCH] Changed capacity to int --- .../events_extension.dart | 2 +- .../pangea_room_extension.dart | 4 +-- .../room_settings_extension.dart | 6 ++-- .../p_class_widgets/room_capacity_button.dart | 30 +++++++++++-------- 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/lib/pangea/extensions/pangea_room_extension/events_extension.dart b/lib/pangea/extensions/pangea_room_extension/events_extension.dart index 8ba3cc169..0511bbdf7 100644 --- a/lib/pangea/extensions/pangea_room_extension/events_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/events_extension.dart @@ -5,7 +5,7 @@ extension EventsRoomExtension on Room { await postLoad(); if (!isRoomAdmin && (_capacity != null) && - (await _numNonAdmins) >= (int.parse(_capacity!))) { + (await _numNonAdmins) >= (_capacity!)) { if (!isSpace) { markUnread(false); } diff --git a/lib/pangea/extensions/pangea_room_extension/pangea_room_extension.dart b/lib/pangea/extensions/pangea_room_extension/pangea_room_extension.dart index c87157733..c557393e7 100644 --- a/lib/pangea/extensions/pangea_room_extension/pangea_room_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/pangea_room_extension.dart @@ -246,10 +246,10 @@ extension PangeaRoom on Room { // room_settings - Future updateRoomCapacity(String newCapacity) => + Future updateRoomCapacity(int newCapacity) => _updateRoomCapacity(newCapacity); - String? get capacity => _capacity; + int? get capacity => _capacity; PangeaRoomRules? get pangeaRoomRules => _pangeaRoomRules; diff --git a/lib/pangea/extensions/pangea_room_extension/room_settings_extension.dart b/lib/pangea/extensions/pangea_room_extension/room_settings_extension.dart index ed2694051..2c069055f 100644 --- a/lib/pangea/extensions/pangea_room_extension/room_settings_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/room_settings_extension.dart @@ -1,7 +1,7 @@ part of "pangea_room_extension.dart"; extension RoomSettingsRoomExtension on Room { - Future _updateRoomCapacity(String newCapacity) => + Future _updateRoomCapacity(int newCapacity) => client.setRoomStateWithKey( id, PangeaEventTypes.capacity, @@ -9,9 +9,9 @@ extension RoomSettingsRoomExtension on Room { {'capacity': newCapacity}, ); - String? get _capacity { + int? get _capacity { final t = getState(PangeaEventTypes.capacity)?.content['capacity']; - return t is String ? t : null; + return t is int ? t : null; } PangeaRoomRules? get _pangeaRoomRules { 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 b67bebc3a..d50bf75c9 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 @@ -22,7 +22,7 @@ class RoomCapacityButton extends StatefulWidget { class RoomCapacityButtonState extends State { Room? room; ChatDetailsController? controller; - String? capacity; + int? capacity; String? nonAdmins; RoomCapacityButtonState({Key? key}); @@ -45,7 +45,7 @@ class RoomCapacityButtonState extends State { if ((room?.isRoomAdmin ?? false) && capacity != null && nonAdmins != null && - int.parse(nonAdmins!) > int.parse(capacity!)) { + int.parse(nonAdmins!) > capacity!) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( @@ -70,9 +70,11 @@ class RoomCapacityButtonState extends State { child: const Icon(Icons.reduce_capacity), ), subtitle: Text( - (capacity != null && nonAdmins != null) - ? '$nonAdmins/$capacity' - : (capacity ?? L10n.of(context)!.capacityNotSet), + (capacity == null) + ? L10n.of(context)!.capacityNotSet + : (nonAdmins != null) + ? '$nonAdmins/$capacity' + : '$capacity', ), title: Text( L10n.of(context)!.roomCapacity, @@ -86,13 +88,13 @@ class RoomCapacityButtonState extends State { ); } - Future setCapacity(String newCapacity) async { + Future setCapacity(int newCapacity) async { capacity = newCapacity; } Future setClassCapacity() async { - final TextEditingController myTextFieldController = - TextEditingController(text: (capacity ?? '')); + final TextEditingController capacityTextController = + TextEditingController(text: (capacity != null ? '$capacity' : '')); showDialog( context: context, useRootNavigator: false, @@ -101,7 +103,7 @@ class RoomCapacityButtonState extends State { L10n.of(context)!.roomCapacity, ), content: TextFormField( - controller: myTextFieldController, + controller: capacityTextController, keyboardType: TextInputType.number, maxLength: 3, inputFormatters: [ @@ -118,14 +120,18 @@ class RoomCapacityButtonState extends State { TextButton( child: Text(L10n.of(context)!.ok), onPressed: () async { - if (myTextFieldController.text == "") return; + // Check if text field empty or non-int + final newCapacity = int.tryParse(capacityTextController.text); + if (newCapacity == null || capacityTextController.text == "") { + return; + } final success = await showFutureLoadingDialog( context: context, future: () => ((room != null) ? (room!.updateRoomCapacity( - capacity = myTextFieldController.text, + capacity = newCapacity, )) - : setCapacity(myTextFieldController.text)), + : setCapacity(newCapacity)), ); if (success.error == null) { ScaffoldMessenger.of(context).showSnackBar(