diff --git a/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart b/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart index f5a2bf8de..371af1768 100644 --- a/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart @@ -131,7 +131,8 @@ extension ChildrenAndParentsRoomExtension on Room { spaceMode = child?.isSpace ?? spaceMode; // get the bool for adding chats to spaces - final bool canAddChild = child?.isRoomAdmin ?? true; + final bool canAddChild = + (child?.isRoomAdmin ?? true) && canSendEvent(EventTypes.SpaceChild); if (!spaceMode) return canAddChild; // if adding space to a space, check if the child is an ancestor diff --git a/lib/pangea/extensions/pangea_room_extension/room_analytics_extension.dart b/lib/pangea/extensions/pangea_room_extension/room_analytics_extension.dart index 97ccc24ac..225e8be61 100644 --- a/lib/pangea/extensions/pangea_room_extension/room_analytics_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/room_analytics_extension.dart @@ -67,7 +67,9 @@ extension AnalyticsRoomExtension on Room { return Future.value(); } + if (!canSendEvent(EventTypes.SpaceChild)) return; if (spaceChildren.any((sc) => sc.roomId == analyticsRoom.id)) return; + try { await setSpaceChild(analyticsRoom.id); } catch (err) { diff --git a/lib/pangea/widgets/class/add_space_toggles.dart b/lib/pangea/widgets/class/add_space_toggles.dart index b8cd622a2..fd7843955 100644 --- a/lib/pangea/widgets/class/add_space_toggles.dart +++ b/lib/pangea/widgets/class/add_space_toggles.dart @@ -76,18 +76,6 @@ class AddToSpaceState extends State { ) : null; - if (widget.activeSpaceId != null) { - final activeSpace = - Matrix.of(context).client.getRoomById(widget.activeSpaceId!); - if (activeSpace != null) { - parent = activeSpace; - } else { - ErrorHandler.logError( - e: Exception('activeSpaceId ${widget.activeSpaceId} not found'), - ); - } - } - //sort possibleParents //if possibleParent in parents, put first //use sort but use any instead of contains because contains uses == and we want to compare by id @@ -102,6 +90,20 @@ class AddToSpaceState extends State { }); isOpen = widget.startOpen; + + if (widget.activeSpaceId != null) { + final activeSpace = + Matrix.of(context).client.getRoomById(widget.activeSpaceId!); + if (activeSpace == null) { + ErrorHandler.logError( + e: Exception('activeSpaceId ${widget.activeSpaceId} not found'), + ); + return; + } + if (activeSpace.canSendEvent(EventTypes.SpaceChild)) { + parent = activeSpace; + } + } } Future _addSingleSpace(String roomToAddId, Room newParent) async {