diff --git a/app/src/main/kotlin/app/grapheneos/info/ui/donate/cryptocurrency/AddressInfoItem.kt b/app/src/main/kotlin/app/grapheneos/info/ui/donate/cryptocurrency/AddressInfoItem.kt index e9e1673..4d1b81f 100644 --- a/app/src/main/kotlin/app/grapheneos/info/ui/donate/cryptocurrency/AddressInfoItem.kt +++ b/app/src/main/kotlin/app/grapheneos/info/ui/donate/cryptocurrency/AddressInfoItem.kt @@ -34,12 +34,13 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.text.LinkAnnotation import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextLinkStyles import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.withLink import androidx.compose.ui.unit.dp import androidx.core.app.ActivityOptionsCompat import app.grapheneos.info.R -import app.grapheneos.info.ui.reusablecomposables.ClickableText @Composable fun AddressInfoItem( @@ -95,31 +96,26 @@ fun AddressInfoItem( ) } - val annotatedString = buildAnnotatedString { - pushLink(LinkAnnotation.Url(addressUrl)) - pushStringAnnotation("URL", addressUrl) - pushStyle(SpanStyle(color = MaterialTheme.colorScheme.primary, fontWeight = FontWeight.Bold)) - - append(address) - - pop() - pop() - pop() + val link = LinkAnnotation.Url( + url = addressUrl, + styles = TextLinkStyles( + style = SpanStyle( + color = MaterialTheme.colorScheme.primary, + fontWeight = FontWeight.Bold + ) + ) + ) { + try { + localUriHandler.openUri(addressUrl) + } catch (e: IllegalArgumentException) { + showSnackbarError(activityNotFoundForDonationAddressSnackbarErrorMessage) + } } - ClickableText( - text = annotatedString, - onClick = { offset -> - annotatedString - .getStringAnnotations("URL", offset, offset).firstOrNull() - ?.let { annotation -> - try { - localUriHandler.openUri(annotation.item) - } catch (e: IllegalArgumentException) { - showSnackbarError(activityNotFoundForDonationAddressSnackbarErrorMessage) - } - } - }, + Text( + buildAnnotatedString { + withLink(link) { append(address) } + } ) IconButton( onClick = { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fb4e569..bd80c6b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -107,9 +107,7 @@ Share OK %1$s (enlarged) - Couldn\'t find an app to open donation address - with! - + No wallet app installed to open this address Cardano can be used to make donations to the non-profit GrapheneOS Foundation. Cardano donation QR code