From 60935c9ff1b1639f9df92987633769ab00339fdb Mon Sep 17 00:00:00 2001 From: Zane Schepke Date: Thu, 16 Oct 2025 00:27:02 -0400 Subject: [PATCH] fix: auto tunnel service worker --- app/build.gradle.kts | 1 + .../wireguardautotunnel/core/service/ServiceManager.kt | 2 ++ .../wireguardautotunnel/core/worker/ServiceWorker.kt | 3 +-- gradle/libs.versions.toml | 6 +++--- .../main/java/com/zaneschepke/logcatter/LogFileManager.kt | 4 ++-- .../java/com/zaneschepke/logcatter/LogcatStreamReader.kt | 6 +++--- .../main/java/com/zaneschepke/logcatter/model/LogMessage.kt | 1 - 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 62a7dc1c..f97061b6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -178,6 +178,7 @@ dependencies { implementation(libs.bundles.hilt.android) implementation(libs.bundles.androidx.work) ksp(libs.hilt.android.compiler) + ksp(libs.androidx.hilt.compiler) // Networking and serialization implementation(libs.bundles.ktor.client) diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/ServiceManager.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/ServiceManager.kt index 8ab5816b..364528ad 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/ServiceManager.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/ServiceManager.kt @@ -121,6 +121,8 @@ constructor( context.bindService(intent, autoTunnelServiceConnection, Context.BIND_AUTO_CREATE) } + suspend fun startAutoTunnelService() = autoTunnelMutex.withLock { startServiceInternal() } + private fun stopServiceInternal() { _autoTunnelService.value?.stop() try { diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/worker/ServiceWorker.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/worker/ServiceWorker.kt index 58183234..91d1dafe 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/worker/ServiceWorker.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/worker/ServiceWorker.kt @@ -47,7 +47,6 @@ constructor( } } - // TODO this needs to be changed override suspend fun doWork(): Result = withContext(ioDispatcher) { Timber.i("Service worker started") @@ -55,7 +54,7 @@ constructor( Timber.i("Checking to see if auto-tunnel has been killed by system") if (isAutoTunnelEnabled && serviceManager.autoTunnelService.value == null) { Timber.i("Service has been killed by system, restoring.") - autoTunnelSettingsRepository.updateAutoTunnelEnabled(true) + serviceManager.startAutoTunnelService() } } Result.success() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8853571d..abce6226 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -55,7 +55,7 @@ androidx-lifecycle-core = ["androidx-lifecycle-runtime-ktx", "androidx-lifecycle # Compose UI essentials androidx-compose-ui = ["androidx-compose-ui", "androidx-compose-ui-graphics", "androidx-compose-ui-tooling-preview"] -androidx-compose-material = ["androidx-material3", "androidx-compose-animation-graphics"] # Merged animation for UI fluidity +androidx-compose-material = ["androidx-material3", "androidx-compose-animation-graphics"] # Material and icons google-material = ["material"] @@ -63,7 +63,7 @@ material-icons = ["material-icons-core", "material-icons-extended"] # Navigation and related androidx-navigation3 = ["androidx-navigation3-runtime", "androidx-navigation3-ui"] -navigation-lifecycle = ["androidx-lifecycle-viewmodel-navigation3"] # Kept as-is since it's tightly coupled +navigation-lifecycle = ["androidx-lifecycle-viewmodel-navigation3"] # Accompanist utilities accompanist = ["accompanist-permissions", "accompanist-drawablepainter"] @@ -74,7 +74,7 @@ androidx-datastore = ["androidx-datastore-preferences"] # Hilt DI and work hilt-android = ["hilt-android"] -androidx-hilt = ["androidx-hilt-compiler", "androidx-hilt-work", "androidx-hilt-hilt-navigation-compose"] +androidx-hilt = ["androidx-hilt-work", "androidx-hilt-hilt-navigation-compose"] androidx-work = ["androidx-work-runtime"] # Ktor networking diff --git a/logcatter/src/main/java/com/zaneschepke/logcatter/LogFileManager.kt b/logcatter/src/main/java/com/zaneschepke/logcatter/LogFileManager.kt index f7456819..02b055d8 100644 --- a/logcatter/src/main/java/com/zaneschepke/logcatter/LogFileManager.kt +++ b/logcatter/src/main/java/com/zaneschepke/logcatter/LogFileManager.kt @@ -1,12 +1,12 @@ package com.zaneschepke.logcatter -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext import java.io.BufferedOutputStream import java.io.File import java.io.FileOutputStream import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext class LogFileManager( private val logDir: String, diff --git a/logcatter/src/main/java/com/zaneschepke/logcatter/LogcatStreamReader.kt b/logcatter/src/main/java/com/zaneschepke/logcatter/LogcatStreamReader.kt index d06d1a0c..9324376f 100644 --- a/logcatter/src/main/java/com/zaneschepke/logcatter/LogcatStreamReader.kt +++ b/logcatter/src/main/java/com/zaneschepke/logcatter/LogcatStreamReader.kt @@ -1,13 +1,13 @@ package com.zaneschepke.logcatter import com.zaneschepke.logcatter.model.LogMessage +import java.io.BufferedReader +import java.io.IOException +import java.io.InputStreamReader import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn -import java.io.BufferedReader -import java.io.IOException -import java.io.InputStreamReader class LogcatStreamReader(private val pid: Int, private val fileManager: LogFileManager) { private val bufferSize = 1024 diff --git a/logcatter/src/main/java/com/zaneschepke/logcatter/model/LogMessage.kt b/logcatter/src/main/java/com/zaneschepke/logcatter/model/LogMessage.kt index 5b390189..7011c56f 100644 --- a/logcatter/src/main/java/com/zaneschepke/logcatter/model/LogMessage.kt +++ b/logcatter/src/main/java/com/zaneschepke/logcatter/model/LogMessage.kt @@ -26,7 +26,6 @@ data class LogMessage( logcatLine, ) } else { - // TODO improve this val parts = logcatLine.trim().split(" ").filter { it.isNotEmpty() } val epochParts = parts[0].split(".").map { it.toLong() } val message = parts.subList(5, parts.size).joinToString(" ")