add join with link

pull/1423/head
WilsonLe 1 year ago
parent d2f1340f75
commit c9a4733fb6

@ -1,3 +1 @@
const String noClassCode = 'No class code!'; const String noClassCode = 'No class code!';
String? justInputtedCode;

@ -6,4 +6,5 @@ class PLocalKey {
static const String paywallBackoff = 'paywallBackoff'; static const String paywallBackoff = 'paywallBackoff';
static const String messagesSinceUpdate = 'messagesSinceLastUpdate'; static const String messagesSinceUpdate = 'messagesSinceLastUpdate';
static const String completedActivities = 'completedActivities'; static const String completedActivities = 'completedActivities';
static const String justInputtedCode = 'justInputtedCode';
} }

@ -2,7 +2,6 @@ import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:developer'; 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/local.key.dart';
import 'package:fluffychat/pangea/constants/pangea_event_types.dart'; import 'package:fluffychat/pangea/constants/pangea_event_types.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
@ -51,16 +50,13 @@ class ClassController extends BaseController {
); );
if (classCode != null) { if (classCode != null) {
await _pangeaController.pStoreService.delete(
PLocalKey.cachedClassCodeToJoin,
isAccountData: false,
);
await joinClasswithCode( await joinClasswithCode(
context, context,
classCode, classCode,
).onError( );
(error, stackTrace) => await _pangeaController.pStoreService.delete(
SpaceCodeUtil.messageSnack(context, ErrorCopy(context, error).body), PLocalKey.cachedClassCodeToJoin,
isAccountData: false,
); );
} }
} }
@ -116,8 +112,13 @@ class ClassController extends BaseController {
SpaceCodeUtil.messageSnack(context, L10n.of(context)!.alreadyInClass); SpaceCodeUtil.messageSnack(context, L10n.of(context)!.alreadyInClass);
return; return;
} else { } else {
justInputtedCode = classCode; await _pangeaController.pStoreService.save(
PLocalKey.justInputtedCode,
classCode,
isAccountData: false,
);
await client.joinRoomById(chosenClassId); await client.joinRoomById(chosenClassId);
_pangeaController.pStoreService.delete(PLocalKey.justInputtedCode);
} }
if (_pangeaController.matrixState.client.getRoomById(chosenClassId) == if (_pangeaController.matrixState.client.getRoomById(chosenClassId) ==

@ -1,7 +1,8 @@
import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pages/chat_list/chat_list.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/pangea/extensions/pangea_room_extension/pangea_room_extension.dart';
import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -18,6 +19,7 @@ void chatListHandleSpaceTap(
ChatListController controller, ChatListController controller,
Room space, Room space,
) { ) {
final PangeaController pangeaController = MatrixState.pangeaController;
void setActiveSpaceAndCloseChat() { void setActiveSpaceAndCloseChat() {
controller.setActiveSpace(space.id); controller.setActiveSpace(space.id);
@ -106,10 +108,12 @@ void chatListHandleSpaceTap(
(element) => (element) =>
element.isSpace && element.membership == Membership.join, 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))) { if (rooms.any((s) => s.spaceChildren.any((c) => c.roomId == space.id))) {
autoJoin(space); autoJoin(space);
} else if (justInputtedCode != null && } else if (justInputtedCode != null &&
space.classCode == justInputtedCode) { justInputtedCode == space.classCode) {
// do nothing // do nothing
} else { } else {
showAlertDialog(context); showAlertDialog(context);

@ -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/constants/url_query_parameter_keys.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:sentry_flutter/sentry_flutter.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 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 //if on home with classcode in url and logged in, then join class automatically
class JoinClassWithLink extends StatefulWidget { 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 //PTODO - show class info in field so they know they're joining the right class
class _JoinClassWithLinkState extends State<JoinClassWithLink> { class _JoinClassWithLinkState extends State<JoinClassWithLink> {
String? classCode; String? classCode;
final PangeaController _pangeaController = MatrixState.pangeaController; final PangeaController pangeaController = MatrixState.pangeaController;
@override @override
void initState() { void initState() {
@ -39,8 +38,7 @@ class _JoinClassWithLinkState extends State<JoinClassWithLink> {
); );
return; return;
} }
await pangeaController.pStoreService.save(
await _pangeaController.pStoreService.save(
PLocalKey.cachedClassCodeToJoin, PLocalKey.cachedClassCodeToJoin,
classCode, classCode,
isAccountData: false, isAccountData: false,

Loading…
Cancel
Save