design(space): let divider be full width

# Conflicts:
#	features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt
This commit is contained in:
ganfra 2025-10-23 16:01:47 +02:00
parent cec4e105ec
commit e689eaf73a
3 changed files with 92 additions and 90 deletions

View file

@ -10,6 +10,7 @@ package io.element.android.features.home.impl.spaces
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
@ -57,8 +58,10 @@ fun HomeSpacesView(
item { item {
HorizontalDivider() HorizontalDivider()
} }
state.spaceRooms.forEach { spaceRoom -> itemsIndexed(
item(spaceRoom.roomId) { items = state.spaceRooms,
key = { _, spaceRoom -> spaceRoom.roomId }
) { index, spaceRoom ->
val isInvitation = spaceRoom.state == CurrentUserMembership.INVITED val isInvitation = spaceRoom.state == CurrentUserMembership.INVITED
SpaceRoomItemView( SpaceRoomItemView(
spaceRoom = spaceRoom, spaceRoom = spaceRoom,
@ -71,6 +74,8 @@ fun HomeSpacesView(
// TODO // TODO
}, },
) )
if (index != state.spaceRooms.lastIndex) {
HorizontalDivider()
} }
} }
} }

View file

@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
@ -182,8 +183,10 @@ private fun SpaceViewContent(
HorizontalDivider() HorizontalDivider()
} }
} }
state.children.forEach { spaceRoom -> itemsIndexed(
item { items = state.children,
key = { _, spaceRoom -> spaceRoom.roomId }
) { index, spaceRoom ->
val isInvitation = spaceRoom.state == CurrentUserMembership.INVITED val isInvitation = spaceRoom.state == CurrentUserMembership.INVITED
val isCurrentlyJoining = state.isJoining(spaceRoom.roomId) val isCurrentlyJoining = state.isJoining(spaceRoom.roomId)
SpaceRoomItemView( SpaceRoomItemView(
@ -208,6 +211,8 @@ private fun SpaceViewContent(
} }
) )
) )
if (index != state.children.lastIndex) {
HorizontalDivider()
} }
} }
if (state.hasMoreToLoad) { if (state.hasMoreToLoad) {

View file

@ -43,7 +43,6 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarType
import io.element.android.libraries.designsystem.modifiers.onKeyboardContextMenuAction import io.element.android.libraries.designsystem.modifiers.onKeyboardContextMenuAction
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.unreadIndicator import io.element.android.libraries.designsystem.theme.unreadIndicator
@ -81,9 +80,10 @@ fun SpaceRoomItemView(
interactionSource = remember { MutableInteractionSource() } interactionSource = remember { MutableInteractionSource() }
) )
.onKeyboardContextMenuAction { onLongClick } .onKeyboardContextMenuAction { onLongClick }
Box(modifier = modifier.then(clickModifier)) {
Column( Column(
modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp), modifier = modifier
.then(clickModifier)
.padding(horizontal = 16.dp, vertical = 12.dp),
) { ) {
SpaceRoomItemScaffold( SpaceRoomItemScaffold(
avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem), avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem),
@ -125,13 +125,6 @@ fun SpaceRoomItemView(
Spacer(modifier = Modifier.height(4.dp)) Spacer(modifier = Modifier.height(4.dp))
} }
} }
HorizontalDivider(
modifier = Modifier
// Match the padding of the text content (padding + avatar + spacer)
.padding(start = AvatarSize.SpaceListItem.dp + 16.dp + 16.dp)
.align(Alignment.BottomCenter)
)
}
} }
@Composable @Composable
@ -264,7 +257,6 @@ internal fun SpaceRoomItemViewPreview(@PreviewParameter(SpaceRoomProvider::class
hideAvatars = false, hideAvatars = false,
onClick = {}, onClick = {},
onLongClick = {}, onLongClick = {},
modifier = Modifier.fillMaxWidth().padding(8.dp),
bottomAction = if (spaceRoom.state == CurrentUserMembership.INVITED) { bottomAction = if (spaceRoom.state == CurrentUserMembership.INVITED) {
{ InviteButtonsRowMolecule({}, {}) } { InviteButtonsRowMolecule({}, {}) }
} else { } else {