From c9a4733fb6bf9f94c5f32ed1c9113367bf1c37df Mon Sep 17 00:00:00 2001 From: WilsonLe Date: Tue, 15 Oct 2024 18:04:19 +1100 Subject: [PATCH] add join with link --- .../constants/class_code_constants.dart | 2 -- lib/pangea/constants/local.key.dart | 1 + lib/pangea/controllers/class_controller.dart | 19 ++++++++++--------- .../utils/chat_list_handle_space_tap.dart | 8 ++++++-- lib/pangea/widgets/class/join_with_link.dart | 10 ++++------ 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/lib/pangea/constants/class_code_constants.dart b/lib/pangea/constants/class_code_constants.dart index 491834a0f..6dd35c2d4 100644 --- a/lib/pangea/constants/class_code_constants.dart +++ b/lib/pangea/constants/class_code_constants.dart @@ -1,3 +1 @@ const String noClassCode = 'No class code!'; - -String? justInputtedCode; diff --git a/lib/pangea/constants/local.key.dart b/lib/pangea/constants/local.key.dart index 1c6f1f37b..2e2dadc9d 100644 --- a/lib/pangea/constants/local.key.dart +++ b/lib/pangea/constants/local.key.dart @@ -6,4 +6,5 @@ class PLocalKey { static const String paywallBackoff = 'paywallBackoff'; static const String messagesSinceUpdate = 'messagesSinceLastUpdate'; static const String completedActivities = 'completedActivities'; + static const String justInputtedCode = 'justInputtedCode'; } diff --git a/lib/pangea/controllers/class_controller.dart b/lib/pangea/controllers/class_controller.dart index afb60d8aa..186cac389 100644 --- a/lib/pangea/controllers/class_controller.dart +++ b/lib/pangea/controllers/class_controller.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'dart:convert'; import 'dart:developer'; -import 'package:fluffychat/pangea/constants/class_code_constants.dart'; import 'package:fluffychat/pangea/constants/local.key.dart'; import 'package:fluffychat/pangea/constants/pangea_event_types.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; @@ -51,16 +50,13 @@ class ClassController extends BaseController { ); if (classCode != null) { - await _pangeaController.pStoreService.delete( - PLocalKey.cachedClassCodeToJoin, - isAccountData: false, - ); await joinClasswithCode( context, classCode, - ).onError( - (error, stackTrace) => - SpaceCodeUtil.messageSnack(context, ErrorCopy(context, error).body), + ); + await _pangeaController.pStoreService.delete( + PLocalKey.cachedClassCodeToJoin, + isAccountData: false, ); } } @@ -116,8 +112,13 @@ class ClassController extends BaseController { SpaceCodeUtil.messageSnack(context, L10n.of(context)!.alreadyInClass); return; } else { - justInputtedCode = classCode; + await _pangeaController.pStoreService.save( + PLocalKey.justInputtedCode, + classCode, + isAccountData: false, + ); await client.joinRoomById(chosenClassId); + _pangeaController.pStoreService.delete(PLocalKey.justInputtedCode); } if (_pangeaController.matrixState.client.getRoomById(chosenClassId) == diff --git a/lib/pangea/utils/chat_list_handle_space_tap.dart b/lib/pangea/utils/chat_list_handle_space_tap.dart index 02f0fab81..2c38f9eb1 100644 --- a/lib/pangea/utils/chat_list_handle_space_tap.dart +++ b/lib/pangea/utils/chat_list_handle_space_tap.dart @@ -1,7 +1,8 @@ import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pages/chat_list/chat_list.dart'; -import 'package:fluffychat/pangea/constants/class_code_constants.dart'; +import 'package:fluffychat/pangea/constants/local.key.dart'; +import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension/pangea_room_extension.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; @@ -18,6 +19,7 @@ void chatListHandleSpaceTap( ChatListController controller, Room space, ) { + final PangeaController pangeaController = MatrixState.pangeaController; void setActiveSpaceAndCloseChat() { controller.setActiveSpace(space.id); @@ -106,10 +108,12 @@ void chatListHandleSpaceTap( (element) => element.isSpace && element.membership == Membership.join, ); + final justInputtedCode = pangeaController.pStoreService + .read(PLocalKey.justInputtedCode, isAccountData: false); if (rooms.any((s) => s.spaceChildren.any((c) => c.roomId == space.id))) { autoJoin(space); } else if (justInputtedCode != null && - space.classCode == justInputtedCode) { + justInputtedCode == space.classCode) { // do nothing } else { showAlertDialog(context); diff --git a/lib/pangea/widgets/class/join_with_link.dart b/lib/pangea/widgets/class/join_with_link.dart index a20f7f1e1..fbfbf331d 100644 --- a/lib/pangea/widgets/class/join_with_link.dart +++ b/lib/pangea/widgets/class/join_with_link.dart @@ -1,12 +1,11 @@ +import 'package:fluffychat/pangea/constants/local.key.dart'; import 'package:fluffychat/pangea/constants/url_query_parameter_keys.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; +import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; -import '../../../widgets/matrix.dart'; -import '../../constants/local.key.dart'; - //if on home with classcode in url and not logged in, then save it soemhow and after llogin, join class automatically //if on home with classcode in url and logged in, then join class automatically class JoinClassWithLink extends StatefulWidget { @@ -19,7 +18,7 @@ class JoinClassWithLink extends StatefulWidget { //PTODO - show class info in field so they know they're joining the right class class _JoinClassWithLinkState extends State { String? classCode; - final PangeaController _pangeaController = MatrixState.pangeaController; + final PangeaController pangeaController = MatrixState.pangeaController; @override void initState() { @@ -39,8 +38,7 @@ class _JoinClassWithLinkState extends State { ); return; } - - await _pangeaController.pStoreService.save( + await pangeaController.pStoreService.save( PLocalKey.cachedClassCodeToJoin, classCode, isAccountData: false,