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 824d4075f6
59 changed files with 248 additions and 173 deletions

View file

@ -33,11 +33,7 @@ fun HomeSpacesView(
when (space) {
CurrentSpace.Root -> {
item {
SpaceHeaderRootView(
numberOfSpaces = state.spaceRooms.size,
// TODO
numberOfRooms = 0,
)
SpaceHeaderRootView(numberOfSpaces = state.spaceRooms.size)
}
}
is CurrentSpace.Space -> item {
@ -45,10 +41,9 @@ fun HomeSpacesView(
avatarData = space.spaceRoom.getAvatarData(AvatarSize.SpaceHeader),
name = space.spaceRoom.name,
topic = space.spaceRoom.topic,
joinRule = space.spaceRoom.joinRule,
visibility = space.spaceRoom.visibility,
heroes = space.spaceRoom.heroes.toImmutableList(),
numberOfMembers = space.spaceRoom.numJoinedMembers,
numberOfRooms = space.spaceRoom.childrenCount,
)
}
}

View file

@ -30,7 +30,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
roomId = RoomId("!spaceId1:example.com"),
),
aSpaceRoom(
name = null,
rawName = null,
numJoinedMembers = 5,
childrenCount = 10,
worldReadable = true,
@ -39,7 +39,7 @@ class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
state = CurrentUserMembership.INVITED,
),
aSpaceRoom(
name = null,
rawName = null,
numJoinedMembers = 5,
childrenCount = 10,
worldReadable = true,

View file

@ -74,7 +74,7 @@ import io.element.android.libraries.designsystem.theme.components.TextField
import io.element.android.libraries.designsystem.theme.components.TopAppBar
import io.element.android.libraries.designsystem.theme.placeholderBackground
import io.element.android.libraries.matrix.api.core.RoomIdOrAlias
import io.element.android.libraries.matrix.api.room.join.JoinRule
import io.element.android.libraries.matrix.api.spaces.SpaceRoomVisibility
import io.element.android.libraries.matrix.ui.components.SpaceInfoRow
import io.element.android.libraries.matrix.ui.components.SpaceMembersView
import io.element.android.libraries.matrix.ui.model.InviteSender
@ -567,10 +567,7 @@ private fun DefaultLoadedContent(
subtitle = {
when {
contentState.details is LoadedDetails.Space -> {
SpaceInfoRow(
joinRule = contentState.joinRule ?: JoinRule.Public,
numberOfRooms = contentState.details.childrenCount,
)
SpaceInfoRow(visibility = SpaceRoomVisibility.fromJoinRule(contentState.joinRule))
}
contentState.alias != null -> {
RoomPreviewSubtitleAtom(contentState.alias.value)

View file

@ -30,7 +30,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider<LeaveSpaceState> {
persistentListOf(
aSelectableSpaceRoom(
spaceRoom = aSpaceRoom(
name = "A long space name that should be truncated",
rawName = "A long space name that should be truncated",
worldReadable = true,
),
isLastAdmin = true,

View file

@ -13,8 +13,10 @@ import io.element.android.features.invite.api.acceptdecline.anAcceptDeclineInvit
import io.element.android.libraries.architecture.AsyncAction
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.join.JoinRule
import io.element.android.libraries.matrix.api.spaces.SpaceRoom
import io.element.android.libraries.previewutils.room.aSpaceRoom
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
import kotlinx.collections.immutable.toImmutableMap
import kotlinx.collections.immutable.toImmutableSet
@ -25,7 +27,17 @@ open class SpaceStateProvider : PreviewParameterProvider<SpaceState> {
aSpaceState(),
aSpaceState(
parentSpace = aSpaceRoom(
name = null,
joinRule = JoinRule.Public
)
),
aSpaceState(
parentSpace = aSpaceRoom(
joinRule = JoinRule.Restricted(persistentListOf())
)
),
aSpaceState(
parentSpace = aSpaceRoom(
rawName = null,
numJoinedMembers = 5,
childrenCount = 10,
worldReadable = true,

View file

@ -134,10 +134,9 @@ private fun SpaceViewContent(
avatarData = currentSpace.getAvatarData(AvatarSize.SpaceHeader),
name = currentSpace.name,
topic = currentSpace.topic,
joinRule = currentSpace.joinRule,
visibility = currentSpace.visibility,
heroes = currentSpace.heroes.toImmutableList(),
numberOfMembers = currentSpace.numJoinedMembers,
numberOfRooms = currentSpace.childrenCount,
)
}
}

View file

@ -29,7 +29,7 @@ import org.junit.Test
class LeaveSpacePresenterTest {
private val aSpace = aSpaceRoom(
roomId = A_SPACE_ID,
name = A_SPACE_NAME,
rawName = A_SPACE_NAME,
)
@Test
@ -198,7 +198,7 @@ class LeaveSpacePresenterTest {
private fun aLeaveSpaceRoom(
spaceRoom: SpaceRoom = aSpaceRoom(
roomId = A_SPACE_ID,
name = A_SPACE_NAME,
rawName = A_SPACE_NAME,
),
isLastAdmin: Boolean = false,
) = LeaveSpaceRoom(

View file

@ -52,7 +52,7 @@ class SpaceViewTest {
@Test
fun `clicking on a room name invokes the expected callback`() {
val aSpaceRoom = aSpaceRoom(roomId = A_ROOM_ID, name = A_ROOM_NAME)
val aSpaceRoom = aSpaceRoom(roomId = A_ROOM_ID, rawName = A_ROOM_NAME)
val eventsRecorder = EventsRecorder<SpaceEvents>(expectEvents = false)
ensureCalledOnceWithParam(aSpaceRoom) {
rule.setSpaceView(