From 5f52b38de687af88caf817784549b1708c64f9f4 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 22 Jan 2026 20:18:22 +0100 Subject: [PATCH] Add reset method to SpaceRoomList --- .../android/libraries/matrix/api/spaces/SpaceRoomList.kt | 1 + .../libraries/matrix/impl/spaces/RustSpaceRoomList.kt | 6 ++++++ .../matrix/impl/fixtures/fakes/FakeFfiSpaceRoomList.kt | 5 +++++ .../libraries/matrix/test/spaces/FakeSpaceRoomList.kt | 5 +++++ 4 files changed, 17 insertions(+) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/SpaceRoomList.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/SpaceRoomList.kt index e2528bf117..5c4bc2323b 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/SpaceRoomList.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/SpaceRoomList.kt @@ -26,6 +26,7 @@ interface SpaceRoomList { val spaceRoomsFlow: Flow> val paginationStatusFlow: StateFlow suspend fun paginate(): Result + suspend fun reset(): Result fun destroy() } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceRoomList.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceRoomList.kt index 80652bee71..31f1a0b0d1 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceRoomList.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceRoomList.kt @@ -81,6 +81,12 @@ class RustSpaceRoomList( } } + override suspend fun reset(): Result { + return runCatchingExceptions { + innerCompletable.await().reset() + } + } + @OptIn(ExperimentalCoroutinesApi::class) override fun destroy() { Timber.d("Destroying SpaceRoomList $roomId") diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceRoomList.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceRoomList.kt index 40c36271ea..c0ecc53d4f 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceRoomList.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceRoomList.kt @@ -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 = { lambdaError() }, ) : SpaceRoomList(NoHandle) { @@ -31,6 +32,10 @@ class FakeFfiSpaceRoomList( paginateResult() } + override suspend fun reset() = simulateLongTask { + resetResult() + } + override fun paginationState(): SpaceRoomListPaginationState { return paginationStateResult() } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/spaces/FakeSpaceRoomList.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/spaces/FakeSpaceRoomList.kt index 70d919dc21..02020de0de 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/spaces/FakeSpaceRoomList.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/spaces/FakeSpaceRoomList.kt @@ -26,6 +26,7 @@ class FakeSpaceRoomList( initialSpaceRoomsValue: List = emptyList(), initialSpaceRoomList: SpaceRoomList.PaginationStatus = SpaceRoomList.PaginationStatus.Loading, private val paginateResult: () -> Result = { lambdaError() }, + private val resetResult: () -> Result = { lambdaError() }, ) : SpaceRoomList { private val currentSpaceMutableStateFlow: MutableStateFlow> = MutableStateFlow(Optional.ofNullable(initialSpaceFlowValue)) override val currentSpaceFlow: StateFlow> = currentSpaceMutableStateFlow.asStateFlow() @@ -52,6 +53,10 @@ class FakeSpaceRoomList( paginateResult() } + override suspend fun reset(): Result = simulateLongTask { + resetResult() + } + override fun destroy() { // No op }