From fed9537f5c4a89f529e38c19dc2bec911527954b Mon Sep 17 00:00:00 2001 From: zaneschepke Date: Mon, 1 Jun 2026 15:37:17 -0400 Subject: [PATCH] fix: parser key rotation, name comment, export name clarity closes #1243 closes #1217 --- .../domain/model/TunnelConfig.kt | 5 ++++- .../viewmodel/SharedAppViewModel.kt | 17 +++++++++++++++-- buildSrc/src/main/kotlin/Extensions.kt | 1 + gradle/libs.versions.toml | 4 +--- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/domain/model/TunnelConfig.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/domain/model/TunnelConfig.kt index 76b6beca..e9682fdc 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/domain/model/TunnelConfig.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/domain/model/TunnelConfig.kt @@ -85,7 +85,10 @@ data class TunnelConfig( fun tunnelConfFromQuick(amQuick: String, name: String? = null): TunnelConfig { val config = Config.parseQuickString(amQuick) - return TunnelConfig(name = name ?: config.defaultName(), quickConfig = amQuick) + return TunnelConfig( + name = config.name ?: name ?: config.defaultName(), + quickConfig = amQuick, + ) } fun generateDefaultGlobalConfig(): TunnelConfig { diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/viewmodel/SharedAppViewModel.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/viewmodel/SharedAppViewModel.kt index ce5bdd1d..6b7aa125 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/viewmodel/SharedAppViewModel.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/viewmodel/SharedAppViewModel.kt @@ -34,7 +34,6 @@ import io.ktor.client.request.prepareGet import io.ktor.client.statement.bodyAsText import java.io.File import java.io.IOException -import java.time.Instant import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll @@ -335,7 +334,9 @@ class SharedAppViewModel( fun exportSelectedTunnels(uri: Uri?) = intent { val selectedTunnels = tunnelsUiState.value.selectedTunnels val files = createConfFiles(selectedTunnels) - val shareFileName = "wgtunnel-export_${Instant.now().epochSecond}.zip" + + val shareFileName = createExportFileName(selectedTunnels.size) + val onFailure = { action: Throwable -> intent { postSideEffect( @@ -349,6 +350,7 @@ class SharedAppViewModel( } Unit } + fileUtils .createNewShareFile(shareFileName) .onSuccess { @@ -366,6 +368,17 @@ class SharedAppViewModel( .onFailure(onFailure) } + private fun createExportFileName(tunnelCount: Int): String { + val timestamp = + java.time.LocalDateTime.now() + .format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm")) + + return when (tunnelCount) { + 1 -> "WGTunnel_Export_$timestamp.zip" + else -> "WGTunnel_Export_${timestamp}_${tunnelCount}_Tunnels.zip" + } + } + fun setScreenRecordingSecurity(to: Boolean) = intent { settingsRepository.updateScreenRecordingSecurity(to) } diff --git a/buildSrc/src/main/kotlin/Extensions.kt b/buildSrc/src/main/kotlin/Extensions.kt index 0e0ac4d5..cd8f3f21 100644 --- a/buildSrc/src/main/kotlin/Extensions.kt +++ b/buildSrc/src/main/kotlin/Extensions.kt @@ -26,6 +26,7 @@ fun allowedLicenseUrls(): List { "https://github.com/RikkaApps/Shizuku-API/blob/master/LICENSE", "https://github.com/rafi0101/Android-Room-Database-Backup/blob/master/LICENSE", "https://opensource.org/license/mit", + "https://www.bouncycastle.org/licence.html", ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index dc4f7068..b5a96c75 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,4 @@ [versions] -app="5.0.0" accompanist = "0.37.3" activityCompose = "1.13.0" androidx-junit = "1.3.0" @@ -44,7 +43,7 @@ storage = "1.6.0" ktfmt = "0.26.0" licensee = "1.14.1" lifecycleViewmodelNavigation3 = "2.10.0" -parser = "1.0.7" +parser = "1.1.0" relinker = "1.4.5" libsu = "6.0.0" jetbrainsKotlinJvm = "2.3.21" @@ -200,7 +199,6 @@ libsu = { module = "com.github.topjohnwu.libsu:core", version.ref = "libsu" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } -kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } kotlinxSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } androidLibrary = { id = "com.android.library", version.ref = "androidGradlePlugin" }