Move user status section below multi-account in preferences

This commit is contained in:
ganfra
2026-06-18 16:42:22 +02:00
parent 061fd82c1a
commit be872e6bec
2 changed files with 29 additions and 25 deletions
@@ -11,11 +11,14 @@ package io.element.android.features.preferences.impl.root
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.features.logout.api.direct.DirectLogoutState
import io.element.android.features.logout.api.direct.aDirectLogoutState
import io.element.android.features.preferences.impl.userstatus.PredefinedUserStatus
import io.element.android.features.preferences.impl.userstatus.UserStatusPickerState
import io.element.android.features.preferences.impl.userstatus.UserStatusState
import io.element.android.features.preferences.impl.userstatus.aUserStatusState
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
import io.element.android.libraries.matrix.api.core.DeviceId
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.api.user.UserStatus
import io.element.android.libraries.matrix.ui.components.aMatrixUser
import io.element.android.libraries.matrix.ui.components.aMatrixUserList
import io.element.android.libraries.ui.strings.CommonStrings
@@ -66,8 +69,9 @@ open class PreferencesRootStateProvider : PreviewParameterProvider<PreferencesRo
showDeveloperSettings = true,
canDeactivateAccount = true,
),
aPreferencesRootState(userStatusState = aUserStatusState(pickerState = UserStatusPickerState.ShowingPicker)),
// Minimal state
aPreferencesRootState(),
aPreferencesRootState(userStatusState = null),
)
}
@@ -83,17 +83,15 @@ fun PreferencesRootView(
},
matrixUser = state.myUser,
)
if (state.userStatusState != null) {
UserStatusSection(state.userStatusState)
}
if (state.isMultiAccountEnabled) {
MultiAccountSection(
state = state,
showTopDivider = state.userStatusState == null,
onAddAccountClick = onAddAccountClick,
)
}
if (state.userStatusState != null) {
UserStatusSection(state.userStatusState, showTopDivider = !state.isMultiAccountEnabled)
}
// 'Account' section
ManageAccountSection(
state = state,
@@ -135,26 +133,9 @@ fun PreferencesRootView(
}
@Composable
private fun ColumnScope.UserStatusSection(userStatusState: UserStatusState) {
HorizontalDivider(
thickness = 8.dp,
color = ElementTheme.colors.bgSubtleSecondary,
)
UserStatusRow(
state = userStatusState,
modifier = Modifier.fillMaxWidth(),
)
HorizontalDivider(
thickness = 8.dp,
color = ElementTheme.colors.bgSubtleSecondary,
)
}
@Composable
private fun ColumnScope.MultiAccountSection(
state: PreferencesRootState,
private fun ColumnScope.UserStatusSection(
userStatusState: UserStatusState,
showTopDivider: Boolean,
onAddAccountClick: () -> Unit,
) {
if(showTopDivider) {
HorizontalDivider(
@@ -162,6 +143,25 @@ private fun ColumnScope.MultiAccountSection(
color = ElementTheme.colors.bgSubtleSecondary,
)
}
UserStatusRow(
state = userStatusState,
modifier = Modifier.fillMaxWidth(),
)
HorizontalDivider(
thickness = 1.dp,
color = ElementTheme.colors.bgSubtleSecondary,
)
}
@Composable
private fun ColumnScope.MultiAccountSection(
state: PreferencesRootState,
onAddAccountClick: () -> Unit,
) {
HorizontalDivider(
thickness = 8.dp,
color = ElementTheme.colors.bgSubtleSecondary,
)
state.otherSessions.forEach { matrixUser ->
MatrixUserRow(
modifier = Modifier