Student enter invalid code, shows class room not found error
This commit is contained in:
parent
550c3ab699
commit
f780f450ee
7 changed files with 21 additions and 21 deletions
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:fluffychat/pages/new_space/new_space_view.dart';
|
||||
import 'package:fluffychat/pangea/constants/class_default_values.dart';
|
||||
import 'package:fluffychat/pangea/constants/model_keys.dart';
|
||||
import 'package:fluffychat/pangea/extensions/pangea_room_extension/pangea_room_extension.dart';
|
||||
import 'package:fluffychat/pangea/pages/class_settings/p_class_widgets/room_capacity_button.dart';
|
||||
import 'package:fluffychat/pangea/utils/bot_name.dart';
|
||||
|
|
@ -156,23 +157,12 @@ class NewSpaceController extends State<NewSpace> {
|
|||
}
|
||||
final spaceId = await client.createRoom(
|
||||
// #Pangea
|
||||
// preset: publicGroup
|
||||
// ? sdk.CreateRoomPreset.publicChat
|
||||
// : sdk.CreateRoomPreset.privateChat,
|
||||
preset: sdk.CreateRoomPreset.publicChat,
|
||||
// Pangea#
|
||||
creationContent: {'type': RoomCreationTypes.mSpace},
|
||||
visibility: publicGroup ? sdk.Visibility.public : null,
|
||||
// #Pangea
|
||||
// roomAliasName: publicGroup
|
||||
// ? nameController.text.trim().toLowerCase().replaceAll(' ', '_')
|
||||
// : null,
|
||||
roomAliasName: classCode,
|
||||
// Pangea#
|
||||
name: nameController.text.trim(),
|
||||
topic: topicController.text.isEmpty ? null : topicController.text,
|
||||
// #Pangea
|
||||
// powerLevelContentOverride: {'events_default': 100},
|
||||
powerLevelContentOverride: addToSpaceKey.currentState != null
|
||||
? await ClassChatPowerLevels.powerLevelOverrideForClassChat(
|
||||
context,
|
||||
|
|
@ -192,8 +182,8 @@ class NewSpaceController extends State<NewSpace> {
|
|||
sdk.StateEvent(
|
||||
type: sdk.EventTypes.RoomJoinRules,
|
||||
content: {
|
||||
'join_rule': 'knock',
|
||||
'access_code': classCode,
|
||||
ModelKey.joinRule: sdk.JoinRules.knock,
|
||||
ModelKey.accessCode: classCode,
|
||||
},
|
||||
),
|
||||
],
|
||||
|
|
|
|||
3
lib/pangea/constants/class_code_constants.dart
Normal file
3
lib/pangea/constants/class_code_constants.dart
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
const String noClassCode = 'No class code!';
|
||||
|
||||
String? justInputtedCode;
|
||||
|
|
@ -2,6 +2,7 @@ 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';
|
||||
|
|
@ -85,8 +86,8 @@ class ClassController extends BaseController {
|
|||
return;
|
||||
}
|
||||
final knockResult = jsonDecode(knockResponse.body);
|
||||
final foundClasses = knockResult['rooms'];
|
||||
if (!(foundClasses is List<String> && foundClasses.isNotEmpty)) {
|
||||
final foundClasses = List<String>.from(knockResult['rooms']);
|
||||
if (foundClasses.isEmpty) {
|
||||
SpaceCodeUtil.messageSnack(
|
||||
context,
|
||||
L10n.of(context)!.unableToFindClass,
|
||||
|
|
@ -94,16 +95,16 @@ class ClassController extends BaseController {
|
|||
return;
|
||||
}
|
||||
final chosenClassId = foundClasses.first;
|
||||
await client.joinRoomById(chosenClassId);
|
||||
if (_pangeaController.matrixState.client.rooms
|
||||
.any((room) => room.id == chosenClassId)) {
|
||||
setActiveSpaceIdInChatListController(chosenClassId);
|
||||
SpaceCodeUtil.messageSnack(context, L10n.of(context)!.alreadyInClass);
|
||||
return;
|
||||
} else {
|
||||
justInputtedCode = classCode;
|
||||
await client.joinRoomById(chosenClassId);
|
||||
}
|
||||
|
||||
await _pangeaController.matrixState.client.joinRoom(chosenClassId);
|
||||
|
||||
if (_pangeaController.matrixState.client.getRoomById(chosenClassId) ==
|
||||
null) {
|
||||
await _pangeaController.matrixState.client.waitForRoomInSync(
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'dart:developer';
|
|||
import 'package:adaptive_dialog/adaptive_dialog.dart';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:fluffychat/pangea/constants/bot_mode.dart';
|
||||
import 'package:fluffychat/pangea/constants/class_code_constants.dart';
|
||||
import 'package:fluffychat/pangea/constants/class_default_values.dart';
|
||||
import 'package:fluffychat/pangea/constants/language_constants.dart';
|
||||
import 'package:fluffychat/pangea/constants/model_keys.dart';
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ extension SpaceRoomExtension on Room {
|
|||
return accessCode;
|
||||
}
|
||||
}
|
||||
return "No class code!";
|
||||
return noClassCode;
|
||||
}
|
||||
|
||||
void _checkClass() {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
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/extensions/pangea_room_extension/pangea_room_extension.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -107,6 +108,9 @@ void chatListHandleSpaceTap(
|
|||
);
|
||||
if (rooms.any((s) => s.spaceChildren.any((c) => c.roomId == space.id))) {
|
||||
autoJoin(space);
|
||||
} else if (justInputtedCode != null &&
|
||||
space.classCode == justInputtedCode) {
|
||||
// do nothing
|
||||
} else {
|
||||
showAlertDialog(context);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,10 +7,11 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
|
|||
import 'package:matrix/matrix.dart';
|
||||
|
||||
class SpaceCodeUtil {
|
||||
static const codeLength = 6;
|
||||
static const codeLength = 7;
|
||||
|
||||
static bool isValidCode(String? spacecode) {
|
||||
return spacecode == null || spacecode.length > 4;
|
||||
if (spacecode == null) return false;
|
||||
return spacecode.length == codeLength && spacecode.contains(r'[0-9]');
|
||||
}
|
||||
|
||||
static Future<String?> generateSpaceCode(Client client) async {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue