Merge branch 'develop' into feature/fga/space_ui_tweaks

This commit is contained in:
ganfra 2026-02-10 09:31:50 +01:00
commit 0dec3a1cb6
174 changed files with 2905 additions and 1323 deletions

View file

@ -13,6 +13,7 @@ sealed class QrLoginException : Exception() {
data object ConnectionInsecure : QrLoginException()
data object Declined : QrLoginException()
data object Expired : QrLoginException()
data object NotFound : QrLoginException()
data object LinkingNotSupported : QrLoginException()
data object OidcMetadataInvalid : QrLoginException()
data object SlidingSyncNotAvailable : QrLoginException()
@ -20,5 +21,4 @@ sealed class QrLoginException : Exception() {
data object CheckCodeAlreadySent : QrLoginException()
data object CheckCodeCannotBeSent : QrLoginException()
data object Unknown : QrLoginException()
data object NotFound : QrLoginException()
}

View file

@ -8,6 +8,9 @@
package io.element.android.libraries.matrix.api.room.history
import androidx.compose.runtime.Immutable
@Immutable
sealed interface RoomHistoryVisibility {
/**
* Previous events are accessible to newly joined members from the point

View file

@ -28,4 +28,10 @@ sealed interface LatestEventValue {
val senderProfile: ProfileDetails,
val isSending: Boolean,
) : LatestEventValue
data class RoomInvite(
val timestamp: Long,
val inviterId: UserId?,
val invitedProfile: ProfileDetails,
) : LatestEventValue
}

View file

@ -8,6 +8,8 @@
package io.element.android.libraries.matrix.api.roomlist
import io.element.android.libraries.matrix.api.core.RoomId
sealed interface RoomListFilter {
companion object {
/**
@ -41,6 +43,10 @@ sealed interface RoomListFilter {
val filters: List<RoomListFilter>
) : RoomListFilter
data class Identifiers(
val values: List<RoomId>,
) : RoomListFilter
/**
* A filter that matches rooms that are unread.
*/

View file

@ -19,6 +19,7 @@ data class RoomSummary(
is LatestEventValue.None -> null
is LatestEventValue.Local -> latestEvent.timestamp
is LatestEventValue.Remote -> latestEvent.timestamp
is LatestEventValue.RoomInvite -> latestEvent.timestamp
}
val isOneToOne get() = info.activeMembersCount == 2L
}

View file

@ -12,9 +12,8 @@ import io.element.android.libraries.matrix.api.core.RoomId
import kotlinx.coroutines.flow.SharedFlow
interface SpaceService {
val spaceRoomsFlow: SharedFlow<List<SpaceRoom>>
suspend fun joinedSpaces(): Result<List<SpaceRoom>>
val topLevelSpacesFlow: SharedFlow<List<SpaceRoom>>
val spaceFiltersFlow: SharedFlow<List<SpaceServiceFilter>>
suspend fun joinedParents(spaceId: RoomId): Result<List<SpaceRoom>>
suspend fun getSpaceRoom(spaceId: RoomId): SpaceRoom?

View file

@ -0,0 +1,24 @@
/*
* Copyright (c) 2025 Element Creations Ltd.
* Copyright 2025 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 io.element.android.libraries.matrix.api.core.RoomId
/**
* Represents a space filter for filtering rooms by space membership.
*
* @property spaceRoom The space room associated with this filter.
* @property level The nesting level of the space (0 = top level, 1 = first level child, etc.).
* @property descendants The list of room IDs that are descendants of this space.
*/
data class SpaceServiceFilter(
val spaceRoom: SpaceRoom,
val level: Int,
val descendants: List<RoomId>,
)