feature(spaces) : introduce SpaceRoomList matrix api

This commit is contained in:
ganfra 2025-09-05 10:27:33 +02:00 committed by Benoit Marty
parent 7e0931c299
commit aadd8b45e2
15 changed files with 277 additions and 115 deletions

View file

@ -8,7 +8,7 @@
package io.element.android.libraries.matrix.api.spaces
import io.element.android.libraries.matrix.api.core.RoomAlias
import io.element.android.libraries.matrix.api.core.SpaceId
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
import io.element.android.libraries.matrix.api.room.RoomType
import io.element.android.libraries.matrix.api.room.join.JoinRule
@ -23,7 +23,7 @@ data class SpaceRoom(
val heroes: List<MatrixUser>,
val joinRule: JoinRule?,
val numJoinedMembers: Int,
val spaceId: SpaceId,
val roomId: RoomId,
val roomType: RoomType,
val state: CurrentUserMembership?,
val topic: String?,

View file

@ -0,0 +1,23 @@
/*
* Copyright 2023, 2024 New Vector Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
* Please see LICENSE files in the repository root for full details.
*/
package io.element.android.libraries.matrix.api.spaces
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
interface SpaceRoomList {
sealed interface PaginationStatus {
data object Loading : PaginationStatus
data class Idle(val hasMoreToLoad: Boolean) : PaginationStatus
}
val spaceRoomsFlow: Flow<List<SpaceRoom>>
val paginationStatusFlow: StateFlow<PaginationStatus>
suspend fun paginate(): Result<Unit>
}

View file

@ -7,9 +7,12 @@
package io.element.android.libraries.matrix.api.spaces
import io.element.android.libraries.matrix.api.core.SpaceId
import kotlinx.coroutines.flow.SharedFlow
interface SpaceService {
val spaceRooms: SharedFlow<List<SpaceRoom>>
val spaceRoomsFlow: SharedFlow<List<SpaceRoom>>
suspend fun joinedSpaces(): Result<List<SpaceRoom>>
suspend fun spaceRoomList(spaceId: SpaceId): SpaceRoomList
}