Spaces : some cleanup on SpaceService
This commit is contained in:
parent
8ed69c03d2
commit
2132b65bf6
4 changed files with 9 additions and 24 deletions
|
|
@ -36,7 +36,7 @@ class HomeSpacesPresenter(
|
||||||
val canCreateSpaces by featureFlagsService.isFeatureEnabledFlow(FeatureFlags.CreateSpaces).collectAsState(false)
|
val canCreateSpaces by featureFlagsService.isFeatureEnabledFlow(FeatureFlags.CreateSpaces).collectAsState(false)
|
||||||
val hideInvitesAvatar by client.rememberHideInvitesAvatar()
|
val hideInvitesAvatar by client.rememberHideInvitesAvatar()
|
||||||
val spaceRooms by remember {
|
val spaceRooms by remember {
|
||||||
client.spaceService.spaceRoomsFlow.map { it.toImmutableList() }
|
client.spaceService.topLevelSpacesFlow.map { it.toImmutableList() }
|
||||||
}.collectAsState(persistentListOf())
|
}.collectAsState(persistentListOf())
|
||||||
|
|
||||||
val seenSpaceInvites by remember {
|
val seenSpaceInvites by remember {
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,7 @@ import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import kotlinx.coroutines.flow.SharedFlow
|
import kotlinx.coroutines.flow.SharedFlow
|
||||||
|
|
||||||
interface SpaceService {
|
interface SpaceService {
|
||||||
val spaceRoomsFlow: SharedFlow<List<SpaceRoom>>
|
val topLevelSpacesFlow: SharedFlow<List<SpaceRoom>>
|
||||||
suspend fun joinedSpaces(): Result<List<SpaceRoom>>
|
|
||||||
|
|
||||||
suspend fun joinedParents(spaceId: RoomId): Result<List<SpaceRoom>>
|
suspend fun joinedParents(spaceId: RoomId): Result<List<SpaceRoom>>
|
||||||
|
|
||||||
suspend fun getSpaceRoom(spaceId: RoomId): SpaceRoom?
|
suspend fun getSpaceRoom(spaceId: RoomId): SpaceRoom?
|
||||||
|
|
|
||||||
|
|
@ -45,21 +45,13 @@ class RustSpaceService(
|
||||||
private val analyticsService: AnalyticsService,
|
private val analyticsService: AnalyticsService,
|
||||||
) : SpaceService {
|
) : SpaceService {
|
||||||
private val spaceRoomMapper = SpaceRoomMapper()
|
private val spaceRoomMapper = SpaceRoomMapper()
|
||||||
override val spaceRoomsFlow = MutableSharedFlow<List<SpaceRoom>>(replay = 1, extraBufferCapacity = 1)
|
override val topLevelSpacesFlow = MutableSharedFlow<List<SpaceRoom>>(replay = 1, extraBufferCapacity = 1)
|
||||||
private val spaceListUpdateProcessor = SpaceListUpdateProcessor(
|
private val spaceListUpdateProcessor = SpaceListUpdateProcessor(
|
||||||
spaceRoomsFlow = spaceRoomsFlow,
|
spaceRoomsFlow = topLevelSpacesFlow,
|
||||||
mapper = spaceRoomMapper,
|
mapper = spaceRoomMapper,
|
||||||
analyticsService = analyticsService,
|
analyticsService = analyticsService,
|
||||||
)
|
)
|
||||||
|
|
||||||
override suspend fun joinedSpaces(): Result<List<SpaceRoom>> = withContext(sessionDispatcher) {
|
|
||||||
runCatchingExceptions {
|
|
||||||
innerSpaceService
|
|
||||||
.topLevelJoinedSpaces()
|
|
||||||
.map(spaceRoomMapper::map)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun joinedParents(spaceId: RoomId): Result<List<SpaceRoom>> = withContext(sessionDispatcher) {
|
override suspend fun joinedParents(spaceId: RoomId): Result<List<SpaceRoom>> = withContext(sessionDispatcher) {
|
||||||
runCatchingExceptions {
|
runCatchingExceptions {
|
||||||
innerSpaceService
|
innerSpaceService
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ import kotlinx.coroutines.flow.SharedFlow
|
||||||
import kotlinx.coroutines.flow.asSharedFlow
|
import kotlinx.coroutines.flow.asSharedFlow
|
||||||
|
|
||||||
class FakeSpaceService(
|
class FakeSpaceService(
|
||||||
private val joinedSpacesResult: () -> Result<List<SpaceRoom>> = { lambdaError() },
|
|
||||||
private val spaceRoomListResult: (RoomId) -> SpaceRoomList = { lambdaError() },
|
private val spaceRoomListResult: (RoomId) -> SpaceRoomList = { lambdaError() },
|
||||||
private val leaveSpaceHandleResult: (RoomId) -> LeaveSpaceHandle = { lambdaError() },
|
private val leaveSpaceHandleResult: (RoomId) -> LeaveSpaceHandle = { lambdaError() },
|
||||||
private val removeChildFromSpaceResult: (RoomId, RoomId) -> Result<Unit> = { _, _ -> lambdaError() },
|
private val removeChildFromSpaceResult: (RoomId, RoomId) -> Result<Unit> = { _, _ -> lambdaError() },
|
||||||
|
|
@ -29,16 +28,12 @@ class FakeSpaceService(
|
||||||
private val editableSpacesResult: () -> Result<List<SpaceRoom>> = { lambdaError() },
|
private val editableSpacesResult: () -> Result<List<SpaceRoom>> = { lambdaError() },
|
||||||
private val addChildToSpaceResult: (RoomId, RoomId) -> Result<Unit> = { _, _ -> lambdaError() },
|
private val addChildToSpaceResult: (RoomId, RoomId) -> Result<Unit> = { _, _ -> lambdaError() },
|
||||||
) : SpaceService {
|
) : SpaceService {
|
||||||
private val _spaceRoomsFlow = MutableSharedFlow<List<SpaceRoom>>()
|
private val _topLevelSpacesFlow = MutableSharedFlow<List<SpaceRoom>>()
|
||||||
override val spaceRoomsFlow: SharedFlow<List<SpaceRoom>>
|
override val topLevelSpacesFlow: SharedFlow<List<SpaceRoom>>
|
||||||
get() = _spaceRoomsFlow.asSharedFlow()
|
get() = _topLevelSpacesFlow.asSharedFlow()
|
||||||
|
|
||||||
suspend fun emitSpaceRoomList(value: List<SpaceRoom>) {
|
suspend fun emitTopLevelSpaces(value: List<SpaceRoom>) {
|
||||||
_spaceRoomsFlow.emit(value)
|
_topLevelSpacesFlow.emit(value)
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun joinedSpaces(): Result<List<SpaceRoom>> = simulateLongTask {
|
|
||||||
return joinedSpacesResult()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun joinedParents(spaceId: RoomId): Result<List<SpaceRoom>> {
|
override suspend fun joinedParents(spaceId: RoomId): Result<List<SpaceRoom>> {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue