From 611a1cc5cd78c595129900f7a56dd5b653cfed29 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Thu, 7 Mar 2024 17:47:40 +0200 Subject: [PATCH] Remove child to parent relations for shared circles space --- .../data_source/ConfigureWorkspaceDataSource.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/auth/src/main/java/org/futo/circles/auth/feature/workspace/data_source/ConfigureWorkspaceDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/workspace/data_source/ConfigureWorkspaceDataSource.kt index aa1eb5d13..a46ca8731 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/workspace/data_source/ConfigureWorkspaceDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/workspace/data_source/ConfigureWorkspaceDataSource.kt @@ -5,6 +5,7 @@ import org.futo.circles.core.feature.room.create.CreateRoomDataSource import org.futo.circles.core.feature.workspace.SpacesTreeAccountDataSource import org.futo.circles.core.model.CIRCLES_SPACE_ACCOUNT_DATA_KEY import org.futo.circles.core.model.CirclesRoom +import org.futo.circles.core.model.PROFILE_SPACE_ACCOUNT_DATA_KEY import org.futo.circles.core.model.SharedCirclesSpace import org.futo.circles.core.provider.MatrixSessionProvider import org.futo.circles.core.utils.getAllJoinedCirclesRoomsAndSpaces @@ -27,7 +28,9 @@ class ConfigureWorkspaceDataSource @Inject constructor( private suspend fun validateAndFixRelationInNeeded(roomId: String, room: CirclesRoom) { try { - getJoinedRoomById(roomId)?.let { validateRelations(room.parentAccountDataKey, it) } + getJoinedRoomById(roomId)?.let { + validateRelations(room.parentAccountDataKey, it, room.accountDataKey) + } } catch (_: Exception) { val parentRoomId = room.parentAccountDataKey?.let { spacesTreeAccountDataSource.getRoomIdByKey(it) } @@ -42,10 +45,14 @@ class ConfigureWorkspaceDataSource @Inject constructor( ?: throw IllegalArgumentException("No account data record for key $accountDataKey") val joinedRoom = getJoinedRoomById(roomId) ?: throw IllegalArgumentException("No joined room for id $roomId found") - validateRelations(room.parentAccountDataKey, joinedRoom) + validateRelations(room.parentAccountDataKey, joinedRoom, accountDataKey) } - private fun validateRelations(parentAccountDataKey: String?, joinedRoom: Room) { + private fun validateRelations( + parentAccountDataKey: String?, + joinedRoom: Room, + accountDataKey: String? + ) { val parentKey = parentAccountDataKey ?: return val parentRoomId = spacesTreeAccountDataSource.getRoomIdByKey(parentKey) ?: throw IllegalArgumentException( @@ -58,7 +65,8 @@ class ConfigureWorkspaceDataSource @Inject constructor( ?.spaceSummary()?.spaceParents?.mapNotNull { it.parentId } ?.contains(parentRoomId) == true - if (!childHasRelationToParent) + //iOS app do not set this relation + if (!childHasRelationToParent && accountDataKey != PROFILE_SPACE_ACCOUNT_DATA_KEY) throw IllegalArgumentException("Missing child to parent relations") val parentHasRelationToChild = joinedParentRoom.asSpace() -- GitLab