From 8bef7b2e2bd8231c27fa19ac6a5f0548ca87ab23 Mon Sep 17 00:00:00 2001 From: Gabby Gurdin Date: Tue, 5 Mar 2024 13:19:41 -0500 Subject: [PATCH] fix for bugs with locked room icons --- lib/pages/chat/chat_event_list.dart | 3 +-- lib/pages/chat_details/chat_details_view.dart | 4 ++-- lib/pages/chat_list/chat_list_item.dart | 2 +- lib/pangea/extensions/pangea_room_extension.dart | 6 +++--- lib/pangea/utils/lock_room.dart | 4 ++++ 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/pages/chat/chat_event_list.dart b/lib/pages/chat/chat_event_list.dart index 30f733d1d..c32e23934 100644 --- a/lib/pages/chat/chat_event_list.dart +++ b/lib/pages/chat/chat_event_list.dart @@ -78,8 +78,7 @@ class ChatEventList extends StatelessWidget { // #Pangea if (i == 1) { - return (controller.room.locked ?? false) && - !controller.room.isRoomAdmin + return (controller.room.locked) && !controller.room.isRoomAdmin ? const LockedChatMessage() : const SizedBox.shrink(); } diff --git a/lib/pages/chat_details/chat_details_view.dart b/lib/pages/chat_details/chat_details_view.dart index a095d49fd..71924d0a5 100644 --- a/lib/pages/chat_details/chat_details_view.dart +++ b/lib/pages/chat_details/chat_details_view.dart @@ -556,12 +556,12 @@ class ChatDetailsView extends StatelessWidget { Theme.of(context).scaffoldBackgroundColor, foregroundColor: iconColor, child: Icon( - room.locked ?? false + room.locked ? Icons.lock_outlined : Icons.no_encryption_outlined, ), ), - value: room.locked ?? false, + value: room.locked, onChanged: (value) => showFutureLoadingDialog( context: context, future: () => value diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 949b18112..40842783a 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -365,7 +365,7 @@ class ChatListItem extends StatelessWidget { ), const SizedBox(width: 8), // #Pangea - if (room.locked ?? false) + if (room.locked) const Padding( padding: EdgeInsets.only(right: 4.0), child: Icon( diff --git a/lib/pangea/extensions/pangea_room_extension.dart b/lib/pangea/extensions/pangea_room_extension.dart index 1b6370ce1..b0c19095f 100644 --- a/lib/pangea/extensions/pangea_room_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension.dart @@ -923,17 +923,17 @@ extension PangeaRoom on Room { ?.content .tryGet('events_default'); - bool? get locked { + bool get locked { if (isDirectChat) return false; if (!isSpace) { - if (eventsDefaultPowerLevel == null) return null; + if (eventsDefaultPowerLevel == null) return false; return (eventsDefaultPowerLevel ?? 0) >= ClassDefaultValues.powerLevelOfAdmin; } for (final child in spaceChildren) { if (child.roomId == null) continue; final Room? room = client.getRoomById(child.roomId!); - if (room?.locked == false && (room?.canChangePowerLevel ?? false)) { + if (room?.locked == false) { return false; } } diff --git a/lib/pangea/utils/lock_room.dart b/lib/pangea/utils/lock_room.dart index e21ec8aba..ba11872f5 100644 --- a/lib/pangea/utils/lock_room.dart +++ b/lib/pangea/utils/lock_room.dart @@ -17,7 +17,11 @@ Future lockChat(Room room, Client client) async { final Map powerLevelsContent = Map.from( room.getState(EventTypes.RoomPowerLevels)!.content, ); + powerLevelsContent['events_default'] = 100; + if (!powerLevelsContent.containsKey('events')) { + powerLevelsContent['events'] = Map.from({}); + } powerLevelsContent['events'][EventTypes.spaceChild] = 100; await room.client.setRoomStateWithKey(