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 dea77a6eb..a24fcd8fd 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -373,7 +373,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 96b5711a3..b45f7bf66 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(