From d2f1340f75b88e61b5c21da97451c1afb78048dc Mon Sep 17 00:00:00 2001 From: WilsonLe Date: Tue, 15 Oct 2024 17:47:18 +1100 Subject: [PATCH] add rate limit, add already joined --- assets/l10n/intl_en.arb | 1 + lib/pangea/controllers/class_controller.dart | 15 +++++++++++++++ lib/pangea/utils/space_code.dart | 1 + 3 files changed, 17 insertions(+) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 437b6d075..88e80bb44 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -4086,6 +4086,7 @@ } }, "roomCapacityExplanation": "{roomType} capacity limits the number of non-admins allowed in a room.", + "tooManyRequest": "Too many request, please try again later.", "@roomCapacityExplanation": { "type": "text", "placeholders": { diff --git a/lib/pangea/controllers/class_controller.dart b/lib/pangea/controllers/class_controller.dart index 5f290a8e8..afb60d8aa 100644 --- a/lib/pangea/controllers/class_controller.dart +++ b/lib/pangea/controllers/class_controller.dart @@ -78,6 +78,13 @@ class ClassController extends BaseController { }, body: jsonEncode({'access_code': classCode}), ); + if (knockResponse.statusCode == 429) { + SpaceCodeUtil.messageSnack( + context, + L10n.of(context)!.tooManyRequest, + ); + return; + } if (knockResponse.statusCode != 200) { SpaceCodeUtil.messageSnack( context, @@ -87,6 +94,14 @@ class ClassController extends BaseController { } final knockResult = jsonDecode(knockResponse.body); final foundClasses = List.from(knockResult['rooms']); + final alreadyJoined = List.from(knockResult['already_joined']); + if (alreadyJoined.isNotEmpty) { + SpaceCodeUtil.messageSnack( + context, + L10n.of(context)!.alreadyInClass, + ); + return; + } if (foundClasses.isEmpty) { SpaceCodeUtil.messageSnack( context, diff --git a/lib/pangea/utils/space_code.dart b/lib/pangea/utils/space_code.dart index 946e4b1e3..0eaef5751 100644 --- a/lib/pangea/utils/space_code.dart +++ b/lib/pangea/utils/space_code.dart @@ -79,6 +79,7 @@ class SpaceCodeUtil { SnackBar( duration: const Duration(seconds: 10), content: Text(message), + showCloseIcon: true, ), ); }