From 2a86c69b9d08f3c35e2fcd27fdadd206def3ff2f Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 16 Jul 2026 16:23:08 +0200 Subject: [PATCH] Sync user status strings with Localazy and tidy formatting # Conflicts: # libraries/ui-strings/src/main/res/values/temporary.xml --- .../home/impl/components/RoomSummaryRow.kt | 2 +- .../TimelineItemContentScannerPreviews.kt | 14 ++++++++++++-- .../impl/userstatus/UserStatusState.kt | 10 +++++----- .../impl/userstatus/UserStatusView.kt | 8 ++++---- .../impl/src/main/res/values/localazy.xml | 8 ++++++++ .../impl/src/main/res/values/temporary.xml | 18 ------------------ .../roomdetails/impl/RoomDetailsView.kt | 2 +- .../impl/RoomMemberModerationView.kt | 2 +- .../impl/room/member/RoomMemberMapper.kt | 2 +- .../item/event/EventTimelineItemMapper.kt | 2 +- .../ui/components/DisplayNameWithStatus.kt | 1 - .../matrix/ui/components/MatrixUserHeader.kt | 1 - .../matrix/ui/components/MatrixUserProvider.kt | 2 +- .../matrix/ui/components/MatrixUserRow.kt | 2 +- .../ui/messages/RoomMemberProfilesCache.kt | 1 - .../ui/model/DisplayedStatusExtention.kt | 4 ++-- .../matrixui/src/main/res/values/temporary.xml | 10 ---------- .../textcomposer/mentions/MentionSpan.kt | 2 +- .../src/main/res/values/localazy.xml | 4 ++++ tools/localazy/config.json | 1 + 20 files changed, 44 insertions(+), 52 deletions(-) delete mode 100644 features/preferences/impl/src/main/res/values/temporary.xml delete mode 100644 libraries/matrixui/src/main/res/values/temporary.xml diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomSummaryRow.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomSummaryRow.kt index a48b4b7469..286576e344 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomSummaryRow.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomSummaryRow.kt @@ -64,8 +64,8 @@ import io.element.android.libraries.designsystem.theme.unreadIndicator import io.element.android.libraries.matrix.api.notification.CallIntent import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.matrix.api.user.DisplayedStatus -import io.element.android.libraries.matrix.ui.components.InviteSenderView import io.element.android.libraries.matrix.ui.components.DisplayNameWithStatus +import io.element.android.libraries.matrix.ui.components.InviteSenderView import io.element.android.libraries.matrix.ui.model.InviteSender import io.element.android.libraries.matrix.ui.model.toEmojiText import io.element.android.libraries.ui.strings.CommonStrings diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemContentScannerPreviews.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemContentScannerPreviews.kt index a59a1c0ae0..7ef6b2dffe 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemContentScannerPreviews.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemContentScannerPreviews.kt @@ -315,7 +315,12 @@ private fun inReplyToInvalidContent(): InReplyToDetails.Ready = InReplyToDetails ) ), textContent = "A text content", - senderProfile = ProfileDetails.Ready(displayName = "Sender", displayNameAmbiguous = false, avatarUrl = null) + senderProfile = ProfileDetails.Ready( + displayName = "Sender", + displayNameAmbiguous = false, + avatarUrl = null, + displayedStatus = null + ) ) private fun inReplyToTextContent(): InReplyToDetails.Ready = InReplyToDetails.Ready( @@ -332,5 +337,10 @@ private fun inReplyToTextContent(): InReplyToDetails.Ready = InReplyToDetails.Re ) ), textContent = "A text content", - senderProfile = ProfileDetails.Ready(displayName = "Sender", displayNameAmbiguous = false, avatarUrl = null) + senderProfile = ProfileDetails.Ready( + displayName = "Sender", + displayNameAmbiguous = false, + avatarUrl = null, + displayedStatus = null + ) ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusState.kt index fa61089144..8d6493b030 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusState.kt @@ -32,9 +32,9 @@ sealed interface UserStatusPickerState { } enum class PredefinedUserStatus(val emoji: String, @StringRes val labelRes: Int) { - IN_A_MEETING("💬", R.string.common_user_status_in_a_meeting), - FOCUS_TIME("💡", R.string.common_user_status_focus_time), - ON_THE_ROAD("🚙", R.string.common_user_status_on_the_road), - BE_RIGHT_BACK("☕", R.string.common_user_status_be_right_back), - AWAY("🌴", R.string.common_user_status_away), + IN_A_MEETING("💬", R.string.screen_settings_user_status_in_a_meeting), + FOCUS_TIME("💡", R.string.screen_settings_user_status_focus_time), + ON_THE_ROAD("🚙", R.string.screen_settings_user_status_on_the_road), + BE_RIGHT_BACK("☕", R.string.screen_settings_user_status_be_right_back), + AWAY("🌴", R.string.screen_settings_user_status_away), } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusView.kt index acd2b0676d..0172071db1 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/userstatus/UserStatusView.kt @@ -117,7 +117,7 @@ private fun EmptyStatusRow( ListItem( headlineContent = { Text( - text = stringResource(R.string.screen_preferences_user_status_placeholder), + text = stringResource(R.string.screen_settings_user_status_placeholder), modifier = Modifier.padding(vertical = 16.dp), ) }, @@ -135,7 +135,7 @@ private fun CurrentStatusRow( ) { val (emoji, text) = when (displayedStatus) { is DisplayedStatus.UserSet -> displayedStatus.status.emoji to displayedStatus.status.text - is DisplayedStatus.InCall -> "🎧" to stringResource(R.string.common_user_status_on_a_call) + is DisplayedStatus.InCall -> "🎧" to stringResource(CommonStrings.common_on_a_call) } ListItem( headlineContent = { Text(text = text, modifier = Modifier.padding(vertical = 16.dp)) }, @@ -210,7 +210,7 @@ private fun UserStatusPickerBottomSheet( } ListItem( headlineContent = { - Text(text = stringResource(R.string.common_user_status_custom)) + Text(text = stringResource(R.string.screen_settings_user_status_custom)) }, leadingContent = ListItemContent.Custom { EmojiText("✏️") }, onClick = { @@ -249,7 +249,7 @@ private fun CustomStatusInputRow( TextField( modifier = Modifier.focusRequester(focusRequester), state = textFieldState, - placeholder = stringResource(R.string.screen_preferences_user_status_custom_hint), + placeholder = stringResource(R.string.screen_settings_user_status_custom_hint), inputTransformation = InputTransformation.maxLength(CUSTOM_STATUS_TEXT_MAX_LENGTH), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), onKeyboardAction = { if (hasChanges) onConfirm() }, diff --git a/features/preferences/impl/src/main/res/values/localazy.xml b/features/preferences/impl/src/main/res/values/localazy.xml index 7a02bbc839..b4b97375b5 100644 --- a/features/preferences/impl/src/main/res/values/localazy.xml +++ b/features/preferences/impl/src/main/res/values/localazy.xml @@ -101,6 +101,14 @@ If you proceed, some of your settings may change." "system settings" "System notifications turned off" "Notifications" + "Away" + "Be right back" + "Custom…" + "Custom status…" + "Focus time" + "In a meeting" + "On the road" + "What\'s your status?" "Black" "Dark" "Light" diff --git a/features/preferences/impl/src/main/res/values/temporary.xml b/features/preferences/impl/src/main/res/values/temporary.xml deleted file mode 100644 index b22f265891..0000000000 --- a/features/preferences/impl/src/main/res/values/temporary.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - In a meeting - Focus time - On the road - Be right back - Away - On a call - Custom… - What\'s your status? - Custom status… - diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt index 0b47464a22..e55144985a 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt @@ -552,7 +552,7 @@ private fun DmHeaderSection( textAlign = TextAlign.Center, ) val userStatus = otherMember.displayedStatus?.toText() - if(userStatus != null){ + if (userStatus != null) { Spacer(modifier = Modifier.height(12.dp)) Text( text = userStatus, diff --git a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationView.kt b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationView.kt index 508d5e5da7..9b0686a64f 100644 --- a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationView.kt +++ b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationView.kt @@ -269,7 +269,7 @@ private fun RoomMemberActionsBottomSheet( .fillMaxWidth() ) val userStatus = user.displayedStatus?.toText() - if(userStatus != null){ + if (userStatus != null) { Text( text = userStatus, style = ElementTheme.typography.fontBodyLgMedium, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt index 2a4ecf3fdc..b2a530f806 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt @@ -30,7 +30,7 @@ object RoomMemberMapper { role = mapRole(roomMember.suggestedRoleForPowerLevel, powerLevel), membershipChangeReason = roomMember.membershipChangeReason, isServiceMember = roomMember.isServiceMember, - //TODO map this value when available + // TODO map this value when available displayedStatus = null, ) } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt index ccb88038d4..801d5fd146 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt @@ -75,7 +75,7 @@ fun RustProfileDetails.map(): ProfileDetails { displayName = displayName, displayNameAmbiguous = displayNameAmbiguous, avatarUrl = avatarUrl, - //TODO map this value when available + // TODO map this value when available displayedStatus = null, ) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/DisplayNameWithStatus.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/DisplayNameWithStatus.kt index 29ff5763ea..7c6e5854da 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/DisplayNameWithStatus.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/DisplayNameWithStatus.kt @@ -17,7 +17,6 @@ import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontStyle -import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt index c064b60a35..3132fe1140 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt @@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt index c4af70e51d..7bc7d00f09 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt @@ -29,7 +29,7 @@ open class MatrixUserProvider : PreviewParameterProvider { get() = sequenceOf( aMatrixUser(), aMatrixUser(displayName = null), - aMatrixUser(displayedStatus = DisplayedStatus.InCall(0L) ), + aMatrixUser(displayedStatus = DisplayedStatus.InCall(0L)), ) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt index 7cd76ef5ee..7fa4fe4557 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt @@ -10,10 +10,10 @@ package io.element.android.libraries.matrix.ui.components import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import io.element.android.compound.theme.ElementTheme import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomMemberProfilesCache.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomMemberProfilesCache.kt index 2d924ea3e2..9e131d5621 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomMemberProfilesCache.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomMemberProfilesCache.kt @@ -36,5 +36,4 @@ class RoomMemberProfilesCache { fun getDisplayedStatus(userId: UserId): DisplayedStatus? { return cache.value[userId]?.displayedStatus } - } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/DisplayedStatusExtention.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/DisplayedStatusExtention.kt index 4d11599356..31d4a57b32 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/DisplayedStatusExtention.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/DisplayedStatusExtention.kt @@ -10,7 +10,7 @@ package io.element.android.libraries.matrix.ui.model import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import io.element.android.libraries.matrix.api.user.DisplayedStatus -import io.element.android.libraries.matrix.ui.R +import io.element.android.libraries.ui.strings.CommonStrings fun DisplayedStatus.toEmojiText(): String = when (this) { is DisplayedStatus.UserSet -> status.emoji @@ -20,5 +20,5 @@ fun DisplayedStatus.toEmojiText(): String = when (this) { @Composable fun DisplayedStatus.toText(): String = when (this) { is DisplayedStatus.UserSet -> "${status.emoji} ${status.text}" - is DisplayedStatus.InCall -> "🎧 ${stringResource(R.string.common_user_status_on_a_call)}" + is DisplayedStatus.InCall -> "🎧 ${stringResource(CommonStrings.common_on_a_call)}" } diff --git a/libraries/matrixui/src/main/res/values/temporary.xml b/libraries/matrixui/src/main/res/values/temporary.xml deleted file mode 100644 index d31b5025fd..0000000000 --- a/libraries/matrixui/src/main/res/values/temporary.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - On a call - diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpan.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpan.kt index 5c7615fde4..6442b70a42 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpan.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpan.kt @@ -86,7 +86,7 @@ class MentionSpan( displayText = formatter.formatDisplayText(type) } - fun updateTrailingText(trailingText: String?){ + fun updateTrailingText(trailingText: String?) { this.trailingText = trailingText } diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml index 485b9b9d59..0f7ae438bb 100644 --- a/libraries/ui-strings/src/main/res/values/localazy.xml +++ b/libraries/ui-strings/src/main/res/values/localazy.xml @@ -23,6 +23,7 @@ "Join call" "Jump to bottom" "Jump to unread" + "Jump to first unread message" "Move the map to my location" "Mentions only" "Muted" @@ -143,6 +144,7 @@ "Manage account & devices" "Manage devices" "Manage rooms" + "Mark as read" "Message" "Minimise" "Next" @@ -516,6 +518,8 @@ Are you sure you want to continue?" "%1$d people" "On the map" + "Your homeserver is on your local network. To connect, Element needs permission to reach devices on this network." + "Allow access to local network" "Failed selecting media, please try again." "Press on a message and choose “%1$s” to include here." "Pin important messages so that they can be easily discovered" diff --git a/tools/localazy/config.json b/tools/localazy/config.json index 5753fe5f47..02b9205ef6 100644 --- a/tools/localazy/config.json +++ b/tools/localazy/config.json @@ -330,6 +330,7 @@ "includeRegex" : [ "screen_advanced_settings_.*", "screen\\.advanced_settings\\..*", + "screen\\.settings\\..*", "screen_edit_profile_.*", "screen_notification_settings_.*", "screen\\.notification_settings\\..*",