From 2132b65bf67729e1485e48afed8af5a6f2c344ba Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 30 Jan 2026 16:56:29 +0100 Subject: [PATCH] Spaces : some cleanup on SpaceService --- .../home/impl/spaces/HomeSpacesPresenter.kt | 2 +- .../libraries/matrix/api/spaces/SpaceService.kt | 4 +--- .../matrix/impl/spaces/RustSpaceService.kt | 12 ++---------- .../matrix/test/spaces/FakeSpaceService.kt | 15 +++++---------- 4 files changed, 9 insertions(+), 24 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt index d9e6aaa4d3..707ac73261 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt @@ -36,7 +36,7 @@ class HomeSpacesPresenter( val canCreateSpaces by featureFlagsService.isFeatureEnabledFlow(FeatureFlags.CreateSpaces).collectAsState(false) val hideInvitesAvatar by client.rememberHideInvitesAvatar() val spaceRooms by remember { - client.spaceService.spaceRoomsFlow.map { it.toImmutableList() } + client.spaceService.topLevelSpacesFlow.map { it.toImmutableList() } }.collectAsState(persistentListOf()) val seenSpaceInvites by remember { 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 1122415d58..3ea8261cf7 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 @@ -12,9 +12,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import kotlinx.coroutines.flow.SharedFlow interface SpaceService { - val spaceRoomsFlow: SharedFlow> - suspend fun joinedSpaces(): Result> - + val topLevelSpacesFlow: SharedFlow> suspend fun joinedParents(spaceId: RoomId): Result> suspend fun getSpaceRoom(spaceId: RoomId): SpaceRoom? 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 0bf677e09d..ab5d05e576 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 @@ -45,21 +45,13 @@ class RustSpaceService( private val analyticsService: AnalyticsService, ) : SpaceService { private val spaceRoomMapper = SpaceRoomMapper() - override val spaceRoomsFlow = MutableSharedFlow>(replay = 1, extraBufferCapacity = 1) + override val topLevelSpacesFlow = MutableSharedFlow>(replay = 1, extraBufferCapacity = 1) private val spaceListUpdateProcessor = SpaceListUpdateProcessor( - spaceRoomsFlow = spaceRoomsFlow, + spaceRoomsFlow = topLevelSpacesFlow, mapper = spaceRoomMapper, analyticsService = analyticsService, ) - override suspend fun joinedSpaces(): Result> = withContext(sessionDispatcher) { - runCatchingExceptions { - innerSpaceService - .topLevelJoinedSpaces() - .map(spaceRoomMapper::map) - } - } - override suspend fun joinedParents(spaceId: RoomId): Result> = withContext(sessionDispatcher) { runCatchingExceptions { innerSpaceService 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 b7a40fdeef..19df31500b 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 @@ -20,7 +20,6 @@ import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow class FakeSpaceService( - private val joinedSpacesResult: () -> Result> = { lambdaError() }, private val spaceRoomListResult: (RoomId) -> SpaceRoomList = { lambdaError() }, private val leaveSpaceHandleResult: (RoomId) -> LeaveSpaceHandle = { lambdaError() }, private val removeChildFromSpaceResult: (RoomId, RoomId) -> Result = { _, _ -> lambdaError() }, @@ -29,16 +28,12 @@ class FakeSpaceService( private val editableSpacesResult: () -> Result> = { lambdaError() }, private val addChildToSpaceResult: (RoomId, RoomId) -> Result = { _, _ -> lambdaError() }, ) : SpaceService { - private val _spaceRoomsFlow = MutableSharedFlow>() - override val spaceRoomsFlow: SharedFlow> - get() = _spaceRoomsFlow.asSharedFlow() + private val _topLevelSpacesFlow = MutableSharedFlow>() + override val topLevelSpacesFlow: SharedFlow> + get() = _topLevelSpacesFlow.asSharedFlow() - suspend fun emitSpaceRoomList(value: List) { - _spaceRoomsFlow.emit(value) - } - - override suspend fun joinedSpaces(): Result> = simulateLongTask { - return joinedSpacesResult() + suspend fun emitTopLevelSpaces(value: List) { + _topLevelSpacesFlow.emit(value) } override suspend fun joinedParents(spaceId: RoomId): Result> {