add join with link

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

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

@ -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';
}

@ -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) ==

@ -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);

@ -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<JoinClassWithLink> {
String? classCode;
final PangeaController _pangeaController = MatrixState.pangeaController;
final PangeaController pangeaController = MatrixState.pangeaController;
@override
void initState() {
@ -39,8 +38,7 @@ class _JoinClassWithLinkState extends State<JoinClassWithLink> {
);
return;
}
await _pangeaController.pStoreService.save(
await pangeaController.pStoreService.save(
PLocalKey.cachedClassCodeToJoin,
classCode,
isAccountData: false,

Loading…
Cancel
Save