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 androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.features.logout.api.direct.DirectLogoutState import io.element.android.features.logout.api.direct.DirectLogoutState
import io.element.android.features.logout.api.direct.aDirectLogoutState 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.UserStatusState
import io.element.android.features.preferences.impl.userstatus.aUserStatusState import io.element.android.features.preferences.impl.userstatus.aUserStatusState
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage 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.core.DeviceId
import io.element.android.libraries.matrix.api.user.MatrixUser 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.aMatrixUser
import io.element.android.libraries.matrix.ui.components.aMatrixUserList import io.element.android.libraries.matrix.ui.components.aMatrixUserList
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@@ -66,8 +69,9 @@ open class PreferencesRootStateProvider : PreviewParameterProvider<PreferencesRo
showDeveloperSettings = true, showDeveloperSettings = true,
canDeactivateAccount = true, canDeactivateAccount = true,
), ),
aPreferencesRootState(userStatusState = aUserStatusState(pickerState = UserStatusPickerState.ShowingPicker)),
// Minimal state // Minimal state
aPreferencesRootState(), aPreferencesRootState(userStatusState = null),
) )
} }
@@ -83,17 +83,15 @@ fun PreferencesRootView(
}, },
matrixUser = state.myUser, matrixUser = state.myUser,
) )
if (state.userStatusState != null) {
UserStatusSection(state.userStatusState)
}
if (state.isMultiAccountEnabled) { if (state.isMultiAccountEnabled) {
MultiAccountSection( MultiAccountSection(
state = state, state = state,
showTopDivider = state.userStatusState == null,
onAddAccountClick = onAddAccountClick, onAddAccountClick = onAddAccountClick,
) )
} }
if (state.userStatusState != null) {
UserStatusSection(state.userStatusState, showTopDivider = !state.isMultiAccountEnabled)
}
// 'Account' section // 'Account' section
ManageAccountSection( ManageAccountSection(
state = state, state = state,
@@ -135,26 +133,9 @@ fun PreferencesRootView(
} }
@Composable @Composable
private fun ColumnScope.UserStatusSection(userStatusState: UserStatusState) { private fun ColumnScope.UserStatusSection(
HorizontalDivider( userStatusState: UserStatusState,
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,
showTopDivider: Boolean, showTopDivider: Boolean,
onAddAccountClick: () -> Unit,
) { ) {
if(showTopDivider) { if(showTopDivider) {
HorizontalDivider( HorizontalDivider(
@@ -162,6 +143,25 @@ private fun ColumnScope.MultiAccountSection(
color = ElementTheme.colors.bgSubtleSecondary, 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 -> state.otherSessions.forEach { matrixUser ->
MatrixUserRow( MatrixUserRow(
modifier = Modifier modifier = Modifier