Format code

This commit is contained in:
ganfra
2026-06-18 20:22:09 +02:00
parent be872e6bec
commit 4a143c1053
6 changed files with 21 additions and 15 deletions
@@ -11,14 +11,12 @@ 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.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
@@ -137,7 +137,7 @@ private fun ColumnScope.UserStatusSection(
userStatusState: UserStatusState, userStatusState: UserStatusState,
showTopDivider: Boolean, showTopDivider: Boolean,
) { ) {
if(showTopDivider) { if (showTopDivider) {
HorizontalDivider( HorizontalDivider(
thickness = 8.dp, thickness = 8.dp,
color = ElementTheme.colors.bgSubtleSecondary, color = ElementTheme.colors.bgSubtleSecondary,
@@ -27,7 +27,6 @@ import kotlinx.coroutines.launch
class UserStatusPresenter( class UserStatusPresenter(
private val matrixClient: MatrixClient, private val matrixClient: MatrixClient,
) : Presenter<UserStatusState> { ) : Presenter<UserStatusState> {
@Composable @Composable
override fun present(): UserStatusState { override fun present(): UserStatusState {
val userProfile by matrixClient.userProfile.collectAsState() val userProfile by matrixClient.userProfile.collectAsState()
@@ -23,22 +23,22 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.minimumInteractiveComponentSize import androidx.compose.material3.minimumInteractiveComponentSize
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.layout.Layout import androidx.compose.ui.layout.Layout
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.compound.tokens.generated.CompoundIcons
@@ -51,11 +51,11 @@ import io.element.android.libraries.designsystem.theme.components.IconButton
import io.element.android.libraries.designsystem.theme.components.IconSource import io.element.android.libraries.designsystem.theme.components.IconSource
import io.element.android.libraries.designsystem.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.ListItem
import io.element.android.libraries.designsystem.theme.components.ModalBottomSheet import io.element.android.libraries.designsystem.theme.components.ModalBottomSheet
import io.element.android.libraries.designsystem.theme.components.hide
import io.element.android.libraries.designsystem.theme.components.Surface import io.element.android.libraries.designsystem.theme.components.Surface
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.components.TextButton import io.element.android.libraries.designsystem.theme.components.TextButton
import io.element.android.libraries.designsystem.theme.components.TextField import io.element.android.libraries.designsystem.theme.components.TextField
import io.element.android.libraries.designsystem.theme.components.hide
import io.element.android.libraries.matrix.api.user.DisplayedStatus import io.element.android.libraries.matrix.api.user.DisplayedStatus
import io.element.android.libraries.matrix.api.user.UserStatus import io.element.android.libraries.matrix.api.user.UserStatus
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@@ -178,13 +178,17 @@ private fun UserStatusPickerBottomSheet(
ListItem( ListItem(
headlineContent = { Text(text = label) }, headlineContent = { Text(text = label) },
leadingContent = ListItemContent.Text(text = predefined.emoji), leadingContent = ListItemContent.Text(text = predefined.emoji),
trailingContent = if (isSelected) ListItemContent.Custom({ trailingContent = if (isSelected) {
ListItemContent.Custom({
Icon( Icon(
imageVector = CompoundIcons.Check(), imageVector = CompoundIcons.Check(),
contentDescription = null, contentDescription = null,
tint = ElementTheme.colors.iconAccentPrimary, tint = ElementTheme.colors.iconAccentPrimary,
) )
}) else null, })
} else {
null
},
onClick = { onClick = {
sheetState.hide(coroutineScope) { sheetState.hide(coroutineScope) {
onSelectPredefined(predefinedUserStatus) onSelectPredefined(predefinedUserStatus)
@@ -249,7 +253,9 @@ private fun CustomStatusInputRow(
) )
} }
} }
} else null } else {
null
}
) )
}, },
trailingContent = ListItemContent.Custom({ trailingContent = ListItemContent.Custom({
@@ -265,8 +271,11 @@ private fun CustomStatusInputRow(
val maxWidth = placeables.maxOf { it.width } val maxWidth = placeables.maxOf { it.width }
val maxHeight = placeables.maxOf { it.height } val maxHeight = placeables.maxOf { it.height }
layout(maxWidth, maxHeight) { layout(maxWidth, maxHeight) {
if (hasChanges) placeables[0].placeRelative(0, 0) if (hasChanges) {
else placeables[1].placeRelative(0, 0) placeables[0].placeRelative(0, 0)
} else {
placeables[1].placeRelative(0, 0)
}
} }
} }
}), }),
@@ -18,7 +18,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test import org.junit.Test
class UserStatusPresenterTest { class UserStatusPresenterTest {
private fun createPresenter(client: FakeMatrixClient = FakeMatrixClient()) = private fun createPresenter(client: FakeMatrixClient = FakeMatrixClient()) =
UserStatusPresenter(matrixClient = client) UserStatusPresenter(matrixClient = client)
@@ -86,6 +86,7 @@ interface MatrixClient {
suspend fun uploadAvatar(mimeType: String, data: ByteArray): Result<Unit> suspend fun uploadAvatar(mimeType: String, data: ByteArray): Result<Unit>
suspend fun removeAvatar(): Result<Unit> suspend fun removeAvatar(): Result<Unit>
suspend fun setUserStatus(status: UserStatus): Result<Unit> suspend fun setUserStatus(status: UserStatus): Result<Unit>
/** Clears both m.status and m.call profile fields (maps to DELETE on the profile endpoint per MSC4426). */ /** Clears both m.status and m.call profile fields (maps to DELETE on the profile endpoint per MSC4426). */
suspend fun clearUserStatus(): Result<Unit> suspend fun clearUserStatus(): Result<Unit>
suspend fun joinRoom(roomId: RoomId): Result<RoomInfo?> suspend fun joinRoom(roomId: RoomId): Result<RoomInfo?>