diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index f8585bce..4b8ea885 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -123,7 +123,7 @@ android {
licensee {
Constants.allowedLicenses.forEach { allow(it) }
- allowUrl(Constants.XZING_LICENSE_URL)
+ Constants.allowedLicenseUrls.forEach { allowUrl(it) }
}
applicationVariants.all {
diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/data/mapper/GitHubReleaseMapper.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/data/mapper/GitHubReleaseMapper.kt
index 2d42e74e..33674735 100644
--- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/data/mapper/GitHubReleaseMapper.kt
+++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/data/mapper/GitHubReleaseMapper.kt
@@ -5,11 +5,11 @@ import com.zaneschepke.wireguardautotunnel.domain.model.AppUpdate
import kotlin.collections.firstOrNull
object GitHubReleaseMapper {
- fun toAppUpdate(gitHubRelease: GitHubRelease): AppUpdate {
+ fun toAppUpdate(gitHubRelease: GitHubRelease, newVersion: String): AppUpdate {
with(gitHubRelease) {
val apkAsset = assets.firstOrNull { it.name.endsWith(".apk") }
return AppUpdate(
- version = tagName.removePrefix("v"),
+ version = newVersion,
title = name ?: "Update $tagName",
releaseNotes = body ?: "No release notes provided",
apkUrl = apkAsset?.browserDownloadUrl,
diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/data/repository/GitHubUpdateRepository.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/data/repository/GitHubUpdateRepository.kt
index 14b404d2..0e3738a7 100644
--- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/data/repository/GitHubUpdateRepository.kt
+++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/data/repository/GitHubUpdateRepository.kt
@@ -53,9 +53,9 @@ class GitHubUpdateRepository(
Timber.i("Latest version: $newVersion, current version: $currentVersion")
if (isNightly && newVersion != currentVersion)
- return@map GitHubReleaseMapper.toAppUpdate(release)
+ return@map GitHubReleaseMapper.toAppUpdate(release, newVersion)
if (NumberUtils.compareVersions(newVersion, currentVersion) > 0) {
- GitHubReleaseMapper.toAppUpdate(release)
+ GitHubReleaseMapper.toAppUpdate(release, newVersion)
} else {
null
}
diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/support/SupportScreen.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/support/SupportScreen.kt
index a96cef5f..6972f7f9 100644
--- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/support/SupportScreen.kt
+++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/ui/screens/support/SupportScreen.kt
@@ -12,6 +12,12 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
+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.style.TextDecoration
+import androidx.compose.ui.text.withLink
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -72,8 +78,41 @@ fun SupportScreen(viewModel: SupportViewModel = hiltViewModel(), appViewModel: A
verticalArrangement = Arrangement.spacedBy(12.dp, Alignment.Top),
modifier = Modifier.fillMaxWidth(),
) {
- Text(uiState.appUpdate?.version ?: "")
- Text(uiState.appUpdate?.releaseNotes ?: "")
+ val annotatedString = buildAnnotatedString {
+ append("${uiState.appUpdate?.version ?: ""}\n")
+ // Add clickable text for second line
+ withLink(
+ link =
+ LinkAnnotation.Clickable(
+ tag = stringResource(id = R.string.release_notes),
+ linkInteractionListener = {
+ val version =
+ if (BuildConfig.VERSION_NAME.contains("nightly")) {
+ "nightly"
+ } else {
+ uiState.appUpdate
+ ?.version
+ ?.removePrefix("v")
+ ?.trim() ?: ""
+ }
+ val url = "${Constants.BASE_RELEASE_URL}$version".trim()
+ context.openWebUrl(url)
+ },
+ styles =
+ TextLinkStyles(
+ style =
+ SpanStyle(
+ color = MaterialTheme.colorScheme.primary,
+ textDecoration = TextDecoration.Underline,
+ )
+ ),
+ )
+ ) {
+ append(stringResource(R.string.release_notes))
+ }
+ }
+
+ Text(text = annotatedString)
if (uiState.isLoading) {
LinearProgressIndicator(
progress = { uiState.downloadProgress },
diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/util/Constants.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/util/Constants.kt
index 8fe85881..b1c204d8 100644
--- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/util/Constants.kt
+++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/util/Constants.kt
@@ -38,4 +38,6 @@ object Constants {
const val GOOGLE_PLAY_FLAVOR = "google"
const val STANDALONE_FLAVOR = "standalone"
const val RELEASE = "release"
+
+ const val BASE_RELEASE_URL = "https://github.com/wgtunnel/wgtunnel/releases/tag/"
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1ce43ca2..67fc14bf 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -279,4 +279,5 @@
Use Android\'s recommended method for getting Wi-Fi information, based on
Android version
+ Release notes
diff --git a/buildSrc/src/main/kotlin/Constants.kt b/buildSrc/src/main/kotlin/Constants.kt
index 868a8ebc..c71b72e1 100644
--- a/buildSrc/src/main/kotlin/Constants.kt
+++ b/buildSrc/src/main/kotlin/Constants.kt
@@ -13,5 +13,5 @@ object Constants {
const val PRERELEASE = "prerelease"
val allowedLicenses = listOf("MIT", "Apache-2.0", "BSD-3-Clause")
- const val XZING_LICENSE_URL: String = "https://github.com/journeyapps/zxing-android-embedded/blob/master/COPYING"
+ val allowedLicenseUrls = listOf("https://github.com/journeyapps/zxing-android-embedded/blob/master/COPYING")
}