Skip to content

Commit 408ca21

Browse files
committed
Multi accounts - improve layout and add preview.
1 parent 7d93c9b commit 408ca21

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootStateProvider.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,20 @@ import io.element.android.features.logout.api.direct.aDirectLogoutState
1111
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
1212
import io.element.android.libraries.matrix.api.core.DeviceId
1313
import io.element.android.libraries.matrix.api.user.MatrixUser
14+
import io.element.android.libraries.matrix.ui.components.aMatrixUser
1415
import io.element.android.libraries.ui.strings.CommonStrings
15-
import kotlinx.collections.immutable.persistentListOf
16+
import kotlinx.collections.immutable.toPersistentList
1617

1718
fun aPreferencesRootState(
18-
myUser: MatrixUser,
19+
myUser: MatrixUser = aMatrixUser(),
20+
otherSessions: List<MatrixUser> = emptyList(),
1921
eventSink: (PreferencesRootEvents) -> Unit = { _ -> },
2022
) = PreferencesRootState(
2123
myUser = myUser,
2224
version = "Version 1.1 (1)",
2325
deviceId = DeviceId("ILAKNDNASDLK"),
2426
isMultiAccountEnabled = true,
25-
otherSessions = persistentListOf(),
27+
otherSessions = otherSessions.toPersistentList(),
2628
showSecureBackup = true,
2729
showSecureBackupBadge = true,
2830
accountManagementUrl = "aUrl",

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootView.kt

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package io.element.android.features.preferences.impl.root
99

1010
import androidx.compose.foundation.clickable
11+
import androidx.compose.foundation.layout.Column
1112
import androidx.compose.foundation.layout.ColumnScope
1213
import androidx.compose.foundation.layout.padding
1314
import androidx.compose.runtime.Composable
@@ -26,9 +27,11 @@ import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
2627
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
2728
import io.element.android.libraries.designsystem.components.list.ListItemContent
2829
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
30+
import io.element.android.libraries.designsystem.preview.ElementPreview
2931
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
3032
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
3133
import io.element.android.libraries.designsystem.preview.PreviewWithLargeHeight
34+
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
3235
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
3336
import io.element.android.libraries.designsystem.theme.components.IconSource
3437
import io.element.android.libraries.designsystem.theme.components.ListItem
@@ -40,6 +43,7 @@ import io.element.android.libraries.matrix.api.core.DeviceId
4043
import io.element.android.libraries.matrix.api.user.MatrixUser
4144
import io.element.android.libraries.matrix.ui.components.MatrixUserProvider
4245
import io.element.android.libraries.matrix.ui.components.MatrixUserRow
46+
import io.element.android.libraries.matrix.ui.components.aMatrixUserList
4347
import io.element.android.libraries.ui.strings.CommonStrings
4448

4549
@Composable
@@ -123,10 +127,14 @@ fun PreferencesRootView(
123127
}
124128

125129
@Composable
126-
fun ColumnScope.MultiAccountSection(
130+
private fun ColumnScope.MultiAccountSection(
127131
state: PreferencesRootState,
128132
onAddAccountClick: () -> Unit,
129133
) {
134+
HorizontalDivider(
135+
thickness = 8.dp,
136+
color = ElementTheme.colors.bgSubtleSecondary,
137+
)
130138
state.otherSessions.forEach { matrixUser ->
131139
MatrixUserRow(
132140
modifier = Modifier.clickable {
@@ -135,6 +143,7 @@ fun ColumnScope.MultiAccountSection(
135143
matrixUser = matrixUser,
136144
avatarSize = AvatarSize.AccountItem,
137145
)
146+
HorizontalDivider()
138147
}
139148
ListItem(
140149
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Plus())),
@@ -143,7 +152,10 @@ fun ColumnScope.MultiAccountSection(
143152
},
144153
onClick = onAddAccountClick,
145154
)
146-
HorizontalDivider()
155+
HorizontalDivider(
156+
thickness = 8.dp,
157+
color = ElementTheme.colors.bgSubtleSecondary,
158+
)
147159
}
148160

149161
@Composable
@@ -334,3 +346,17 @@ private fun ContentToPreview(matrixUser: MatrixUser) {
334346
onDeactivateClick = {},
335347
)
336348
}
349+
350+
@PreviewsDayNight
351+
@Composable
352+
internal fun MultiAccountSectionPreview() = ElementPreview {
353+
Column {
354+
MultiAccountSection(
355+
state = aPreferencesRootState(
356+
otherSessions = aMatrixUserList(),
357+
),
358+
onAddAccountClick = {},
359+
)
360+
}
361+
}
362+

0 commit comments

Comments
 (0)