Add reset method to SpaceRoomList

This commit is contained in:
ganfra 2026-01-22 20:18:22 +01:00
parent bcd707d307
commit 5f52b38de6
4 changed files with 17 additions and 0 deletions

View file

@ -26,6 +26,7 @@ interface SpaceRoomList {
val spaceRoomsFlow: Flow<List<SpaceRoom>>
val paginationStatusFlow: StateFlow<PaginationStatus>
suspend fun paginate(): Result<Unit>
suspend fun reset(): Result<Unit>
fun destroy()
}

View file

@ -81,6 +81,12 @@ class RustSpaceRoomList(
}
}
override suspend fun reset(): Result<Unit> {
return runCatchingExceptions {
innerCompletable.await().reset()
}
}
@OptIn(ExperimentalCoroutinesApi::class)
override fun destroy() {
Timber.d("Destroying SpaceRoomList $roomId")

View file

@ -21,6 +21,7 @@ import uniffi.matrix_sdk_ui.SpaceRoomListPaginationState
class FakeFfiSpaceRoomList(
private val paginateResult: () -> Unit = { lambdaError() },
private val resetResult: () -> Unit = { lambdaError() },
private val paginationStateResult: () -> SpaceRoomListPaginationState = { lambdaError() },
private val roomsResult: () -> List<SpaceRoom> = { lambdaError() },
) : SpaceRoomList(NoHandle) {
@ -31,6 +32,10 @@ class FakeFfiSpaceRoomList(
paginateResult()
}
override suspend fun reset() = simulateLongTask {
resetResult()
}
override fun paginationState(): SpaceRoomListPaginationState {
return paginationStateResult()
}

View file

@ -26,6 +26,7 @@ class FakeSpaceRoomList(
initialSpaceRoomsValue: List<SpaceRoom> = emptyList(),
initialSpaceRoomList: SpaceRoomList.PaginationStatus = SpaceRoomList.PaginationStatus.Loading,
private val paginateResult: () -> Result<Unit> = { lambdaError() },
private val resetResult: () -> Result<Unit> = { lambdaError() },
) : SpaceRoomList {
private val currentSpaceMutableStateFlow: MutableStateFlow<Optional<SpaceRoom>> = MutableStateFlow(Optional.ofNullable(initialSpaceFlowValue))
override val currentSpaceFlow: StateFlow<Optional<SpaceRoom>> = currentSpaceMutableStateFlow.asStateFlow()
@ -52,6 +53,10 @@ class FakeSpaceRoomList(
paginateResult()
}
override suspend fun reset(): Result<Unit> = simulateLongTask {
resetResult()
}
override fun destroy() {
// No op
}