diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/SpaceService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/SpaceService.kt index 927bec13e1..39ea699ae3 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/SpaceService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/SpaceService.kt @@ -23,6 +23,14 @@ interface SpaceService { fun getLeaveSpaceHandle(spaceId: RoomId): LeaveSpaceHandle + /** + * Add a child room to a space. + * @param spaceId The space ID to which the child will be added. + * @param childId The room ID of the child to add. + * @return A result indicating success or failure. + */ + suspend fun addChildToSpace(spaceId: RoomId, childId: RoomId): Result + /** * Remove a child room from a space. * @param spaceId The space ID from which to remove the child. diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceService.kt index 2ce184484c..771da5a3d5 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceService.kt @@ -98,6 +98,12 @@ class RustSpaceService( } } + override suspend fun addChildToSpace(spaceId: RoomId, childId: RoomId): Result = withContext(sessionDispatcher) { + runCatchingExceptions { + innerSpaceService.addChildToSpace(childId = childId.value, spaceId = spaceId.value) + } + } + override suspend fun removeChildFromSpace(spaceId: RoomId, childId: RoomId): Result = withContext(sessionDispatcher) { runCatchingExceptions { innerSpaceService.removeChildFromSpace(childId = childId.value, spaceId = spaceId.value) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/spaces/FakeSpaceService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/spaces/FakeSpaceService.kt index 0cd9907db3..2db83b601a 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/spaces/FakeSpaceService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/spaces/FakeSpaceService.kt @@ -23,6 +23,7 @@ class FakeSpaceService( private val joinedSpacesResult: () -> Result> = { lambdaError() }, private val spaceRoomListResult: (RoomId) -> SpaceRoomList = { lambdaError() }, private val leaveSpaceHandleResult: (RoomId) -> LeaveSpaceHandle = { lambdaError() }, + private val addChildToSpaceResult: (RoomId, RoomId) -> Result = { _, _ -> lambdaError() }, private val removeChildFromSpaceResult: (RoomId, RoomId) -> Result = { _, _ -> lambdaError() }, private val joinedParentsResult: (RoomId) -> Result> = { lambdaError() }, private val getSpaceRoomResult: (RoomId) -> SpaceRoom? = { lambdaError() }, @@ -55,6 +56,10 @@ class FakeSpaceService( return leaveSpaceHandleResult(spaceId) } + override suspend fun addChildToSpace(spaceId: RoomId, childId: RoomId): Result = simulateLongTask { + addChildToSpaceResult(spaceId, childId) + } + override suspend fun removeChildFromSpace(spaceId: RoomId, childId: RoomId): Result = simulateLongTask { removeChildFromSpaceResult(spaceId, childId) }