summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2024-10-02 09:00:49 +0200
committerDavid Göransson <david.goransson@mullvad.net>2024-10-03 08:52:02 +0200
commita71099188b851fee82ecf1018c2c32e43c4e224a (patch)
tree33c0015becc745b3c9320fecc55b3dda2ecff632 /android
parent57c2c146e4af33323c5b347c5f04ec7ea13fe374 (diff)
downloadmullvadvpn-a71099188b851fee82ecf1018c2c32e43c4e224a.tar.xz
mullvadvpn-a71099188b851fee82ecf1018c2c32e43c4e224a.zip
Migrate to new LinkAnnotation
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt37
1 files changed, 4 insertions, 33 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt
index 0a69b4fbb6..cafb9ef11d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt
@@ -1,8 +1,6 @@
package net.mullvad.mullvadvpn.compose.screen
-import android.net.Uri
import androidx.annotation.StringRes
-import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@@ -18,7 +16,6 @@ import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.CircleShape
-import androidx.compose.foundation.text.ClickableText
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ChevronLeft
import androidx.compose.material.icons.filled.ChevronRight
@@ -37,12 +34,12 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
-import androidx.compose.ui.text.ExperimentalTextApi
+import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.SpanStyle
-import androidx.compose.ui.text.UrlAnnotation
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextDecoration
+import androidx.compose.ui.text.withLink
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.constraintlayout.compose.ConstrainedLayoutReference
@@ -59,7 +56,6 @@ import net.mullvad.mullvadvpn.compose.component.NavigateBackIconButton
import net.mullvad.mullvadvpn.compose.component.ScaffoldWithLargeTopBarAndButton
import net.mullvad.mullvadvpn.compose.extensions.toAnnotatedString
import net.mullvad.mullvadvpn.compose.transitions.SlideInFromRightTransition
-import net.mullvad.mullvadvpn.lib.common.util.openLink
import net.mullvad.mullvadvpn.lib.common.util.openVpnSettings
import net.mullvad.mullvadvpn.lib.theme.AppTheme
import net.mullvad.mullvadvpn.lib.theme.Dimens
@@ -80,7 +76,6 @@ fun AutoConnectAndLockdownMode(navigator: DestinationsNavigator) {
AutoConnectAndLockdownModeScreen(onBackClick = dropUnlessResumed { navigator.navigateUp() })
}
-@OptIn(ExperimentalFoundationApi::class)
@Composable
fun AutoConnectAndLockdownModeScreen(onBackClick: () -> Unit = {}) {
val context = LocalContext.current
@@ -101,7 +96,6 @@ fun AutoConnectAndLockdownModeScreen(onBackClick: () -> Unit = {}) {
backButtonRef = backButtonRef,
nextButtonRef = nextButtonRef,
pager = pager,
- onOpenUrl = { url -> context.openLink(Uri.parse(url)) },
)
// Go to previous page
@@ -149,14 +143,12 @@ fun AutoConnectAndLockdownModeScreen(onBackClick: () -> Unit = {}) {
)
}
-@OptIn(ExperimentalFoundationApi::class, ExperimentalTextApi::class)
@Composable
private fun ConstraintLayoutScope.AutoConnectCarousel(
pagerState: PagerState,
backButtonRef: ConstrainedLayoutReference,
nextButtonRef: ConstrainedLayoutReference,
pager: ConstrainedLayoutReference,
- onOpenUrl: (String) -> Unit,
) {
HorizontalPager(
state = pagerState,
@@ -175,18 +167,13 @@ private fun ConstraintLayoutScope.AutoConnectCarousel(
modifier = Modifier.fillMaxWidth(),
) {
val annotatedTopText = page.annotatedTopText()
- ClickableText(
+ Text(
modifier = Modifier.padding(horizontal = Dimens.largePadding),
style =
MaterialTheme.typography.titleMedium.copy(
color = MaterialTheme.colorScheme.onSurfaceVariant
),
text = annotatedTopText,
- onClick = {
- annotatedTopText.getUrlAnnotations(it, it).let { annotation ->
- annotation.firstOrNull()?.item?.url?.let { onOpenUrl(it) }
- }
- },
)
Image(
modifier = Modifier.padding(top = Dimens.topPadding, bottom = Dimens.bottomPadding),
@@ -230,7 +217,6 @@ private fun CarouselNavigationButton(
}
}
-@OptIn(ExperimentalFoundationApi::class)
@Composable
private fun ConstraintLayoutScope.PageIndicator(
pagerState: PagerState,
@@ -279,14 +265,13 @@ private fun buildTopText(@StringRes id: Int) = buildAnnotatedString {
}
}
-@OptIn(ExperimentalTextApi::class)
@Composable
private fun buildLockdownTopText() = buildAnnotatedString {
append(buildTopText(id = R.string.auto_connect_carousel_third_slide_top_text))
append(" ")
withLink(
- UrlAnnotation(
+ LinkAnnotation.Url(
stringResource(id = R.string.lockdown_url).appendHideNavOnPlayBuild(IS_PLAY_BUILD)
)
) {
@@ -307,20 +292,6 @@ private fun buildLockdownTopText() = buildAnnotatedString {
}
}
-// Will be replaced by upstream withLink in Compose UI 1.7.0
-@OptIn(ExperimentalTextApi::class)
-inline fun <R : Any> AnnotatedString.Builder.withLink(
- annotation: UrlAnnotation,
- block: AnnotatedString.Builder.() -> R,
-): R {
- val index = pushUrlAnnotation(annotation)
- return try {
- block(this)
- } finally {
- pop(index)
- }
-}
-
private enum class PAGES(
val annotatedTopText: @Composable () -> AnnotatedString,
val image: Int,