From 9d52beb525f3ce46ab26719dce5571fb449d1028 Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Mon, 5 Jun 2023 11:51:00 +0100 Subject: [PATCH] Invites: simplify string building --- .../impl/components/InviteSummaryRow.kt | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/components/InviteSummaryRow.kt b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/components/InviteSummaryRow.kt index abd6109094..7d1e7d9eb9 100644 --- a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/components/InviteSummaryRow.kt +++ b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/components/InviteSummaryRow.kt @@ -37,12 +37,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle -import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp @@ -181,21 +181,21 @@ private fun SenderRow(sender: InviteSender) { avatarData = sender.avatarData.copy(size = AvatarSize.Custom(16.dp)), ) Text( - text = buildAnnotatedString { - val placeholder = "$" - val text = stringResource(R.string.screen_invites_invited_you, placeholder, sender.userId.value) - val nameIndex = text.indexOf(placeholder) - - // Text before the placeholder - append(text.take(nameIndex)) - - // Display name - withStyle(SpanStyle(fontWeight = FontWeight.Medium, color = MaterialTheme.colorScheme.primary)) { - append(sender.displayName) - } - - // Text after the placeholder - append(text.drop(nameIndex + placeholder.length)) + text = stringResource(R.string.screen_invites_invited_you, sender.displayName, sender.userId.value).let { text -> + val senderNameStart = LocalContext.current.getString(R.string.screen_invites_invited_you).indexOf("%1\$s") + AnnotatedString( + text = text, + spanStyles = listOf( + AnnotatedString.Range( + SpanStyle( + fontWeight = FontWeight.Medium, + color = MaterialTheme.colorScheme.primary + ), + start = senderNameStart, + end = senderNameStart + sender.displayName.length + ) + ) + ) }, style = noFontPadding, color = MaterialTheme.colorScheme.secondary,