From 4017d6333c33bfe0e643ae2fe3b568dd19f586e2 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Mon, 29 Jan 2024 15:54:13 -0500 Subject: [PATCH 1/2] fix for room rules migration --- lib/pages/chat_details/chat_details.dart | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/pages/chat_details/chat_details.dart b/lib/pages/chat_details/chat_details.dart index dce775fa6..1962f848e 100644 --- a/lib/pages/chat_details/chat_details.dart +++ b/lib/pages/chat_details/chat_details.dart @@ -3,6 +3,9 @@ import 'package:collection/collection.dart'; import 'package:file_picker/file_picker.dart'; import 'package:fluffychat/pages/chat_details/chat_details_view.dart'; import 'package:fluffychat/pages/settings/settings.dart'; +import 'package:fluffychat/pangea/constants/pangea_event_types.dart'; +import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; +import 'package:fluffychat/pangea/models/class_model.dart'; import 'package:fluffychat/pangea/utils/set_class_name.dart'; import 'package:fluffychat/pangea/utils/set_class_topic.dart'; import 'package:fluffychat/pangea/widgets/class/add_space_toggles.dart'; @@ -425,5 +428,22 @@ class ChatDetailsController extends State { bool showEditNameIcon = false; void hoverEditNameIcon(bool hovering) => setState(() => showEditNameIcon = !showEditNameIcon); + + @override + void initState() { + super.initState(); + if (roomId == null) return; + final Room? room = Matrix.of(context).client.getRoomById(roomId!); + if (room == null) return; + + if (room.classSettings != null && room.pangeaRoomRules == null) { + Matrix.of(context).client.setRoomStateWithKey( + widget.roomId, + PangeaEventTypes.rules, + '', + PangeaRoomRules().toJson(), + ); + } + } // Pangea# } From b1abad5e306e4678ac5f0c9c36bb1b7f72244cbf Mon Sep 17 00:00:00 2001 From: ggurdin Date: Mon, 29 Jan 2024 16:01:03 -0500 Subject: [PATCH 2/2] moved functionn --- lib/pages/chat_details/chat_details.dart | 16 +------------- lib/pangea/controllers/class_controller.dart | 22 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/lib/pages/chat_details/chat_details.dart b/lib/pages/chat_details/chat_details.dart index 1962f848e..e600f1a51 100644 --- a/lib/pages/chat_details/chat_details.dart +++ b/lib/pages/chat_details/chat_details.dart @@ -3,9 +3,6 @@ import 'package:collection/collection.dart'; import 'package:file_picker/file_picker.dart'; import 'package:fluffychat/pages/chat_details/chat_details_view.dart'; import 'package:fluffychat/pages/settings/settings.dart'; -import 'package:fluffychat/pangea/constants/pangea_event_types.dart'; -import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; -import 'package:fluffychat/pangea/models/class_model.dart'; import 'package:fluffychat/pangea/utils/set_class_name.dart'; import 'package:fluffychat/pangea/utils/set_class_topic.dart'; import 'package:fluffychat/pangea/widgets/class/add_space_toggles.dart'; @@ -432,18 +429,7 @@ class ChatDetailsController extends State { @override void initState() { super.initState(); - if (roomId == null) return; - final Room? room = Matrix.of(context).client.getRoomById(roomId!); - if (room == null) return; - - if (room.classSettings != null && room.pangeaRoomRules == null) { - Matrix.of(context).client.setRoomStateWithKey( - widget.roomId, - PangeaEventTypes.rules, - '', - PangeaRoomRules().toJson(), - ); - } + MatrixState.pangeaController.classController.addMissingRoomRules(roomId); } // Pangea# } diff --git a/lib/pangea/controllers/class_controller.dart b/lib/pangea/controllers/class_controller.dart index c91eab1c0..6d028fda2 100644 --- a/lib/pangea/controllers/class_controller.dart +++ b/lib/pangea/controllers/class_controller.dart @@ -3,9 +3,11 @@ import 'dart:developer'; import 'package:collection/collection.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'; import 'package:fluffychat/pangea/extensions/client_extension.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; +import 'package:fluffychat/pangea/models/class_model.dart'; import 'package:fluffychat/pangea/utils/class_code.dart'; import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:flutter/foundation.dart'; @@ -156,4 +158,24 @@ class ClassController extends BaseController { // BE - check class code and if class code is correct, invite student to room // FE - look for invite from room and automatically accept } + + Future addMissingRoomRules(String? roomId) async { + if (roomId == null) return; + final Room? room = _pangeaController.matrixState.client.getRoomById(roomId); + if (room == null) return; + + if (room.classSettings != null && room.pangeaRoomRules == null) { + try { + await _pangeaController.matrixState.client.setRoomStateWithKey( + roomId, + PangeaEventTypes.rules, + '', + PangeaRoomRules().toJson(), + ); + } catch (err, stack) { + debugger(when: kDebugMode); + ErrorHandler.logError(e: err, s: stack); + } + } + } }