Merge pull request #5468 from element-hq/feature/fga/space_tweaks

Spaces : some tweaks around ui
This commit is contained in:
ganfra 2025-10-07 10:55:05 +02:00 committed by GitHub
commit a497703a90
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
59 changed files with 248 additions and 173 deletions

View file

@ -15,7 +15,7 @@ import io.element.android.libraries.matrix.api.room.join.JoinRule
import io.element.android.libraries.matrix.api.user.MatrixUser
data class SpaceRoom(
val name: String?,
val rawName: String?,
val avatarUrl: String?,
val canonicalAlias: RoomAlias?,
val childrenCount: Int,
@ -32,6 +32,20 @@ data class SpaceRoom(
* The via parameters of the room.
*/
val via: List<String>,
val isDirect: Boolean?,
) {
val isSpace = roomType == RoomType.Space
/**
* Temporary logic to compute a name for direct rooms with no name.
* This will be replaced by sdk logic in the future.
*/
val name = if (rawName == null && isDirect == true && heroes.size == 1) {
val dmRecipient = heroes.first()
dmRecipient.displayName
} else {
rawName
}
val visibility = SpaceRoomVisibility.fromJoinRule(joinRule)
}

View file

@ -0,0 +1,26 @@
/*
* 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 androidx.compose.runtime.Immutable
import io.element.android.libraries.matrix.api.room.join.JoinRule
@Immutable
sealed interface SpaceRoomVisibility {
data object Private : SpaceRoomVisibility
data object Public : SpaceRoomVisibility
data object Restricted : SpaceRoomVisibility
companion object {
fun fromJoinRule(joinRule: JoinRule?): SpaceRoomVisibility = when (joinRule) {
JoinRule.Public -> Public
is JoinRule.Restricted, is JoinRule.KnockRestricted -> Restricted
// Else fallback to Private
else -> Private
}
}
}