From ba47fc7ddb6500a0a9b2b914c15914f06547e067 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 18 Mar 2026 22:04:47 +0000 Subject: [PATCH] Make offline flavor not require ConnectivityService - Guard `startService()` in Amber.kt to skip service startup for the offline flavor (the manifest doesn't declare ConnectivityService, so attempts to start it would fail) - Move the periodic DB maintenance tasks (expiring permissions and deleting stale application entries) from ConnectivityService's timer into ClearLogsWorker, which already runs daily via WorkManager for both flavors https://claude.ai/code/session_014Zqb1AEPPF2RrzmEyPnmei --- .../java/com/greenart7c3/nostrsigner/Amber.kt | 1 + .../nostrsigner/service/ClearLogsWorker.kt | 22 +++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt index a96d9117..2618ac8e 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt @@ -339,6 +339,7 @@ class Amber : } fun startService() { + if (BuildFlavorChecker.isOfflineFlavor()) return try { Log.d(TAG, "Starting ConnectivityService") val operation = PendingIntent.getForegroundService( diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/service/ClearLogsWorker.kt b/app/src/main/java/com/greenart7c3/nostrsigner/service/ClearLogsWorker.kt index 1f2cb867..fd48b196 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/service/ClearLogsWorker.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/service/ClearLogsWorker.kt @@ -6,6 +6,7 @@ import androidx.work.CoroutineWorker import androidx.work.WorkerParameters import com.greenart7c3.nostrsigner.Amber import com.greenart7c3.nostrsigner.LocalPreferences +import com.greenart7c3.nostrsigner.database.LogEntity import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.TimeUtils.ONE_WEEK import kotlin.coroutines.cancellation.CancellationException @@ -15,8 +16,10 @@ class ClearLogsWorker(appContext: Context, workerParams: WorkerParameters) : Cor override suspend fun doWork(): Result { LocalPreferences.allSavedAccounts(Amber.instance).forEach { try { - val oneWeek = System.currentTimeMillis() - (ONE_WEEK * 1000L) + val now = System.currentTimeMillis() + val oneWeek = now - (ONE_WEEK * 1000L) val oneWeekAgo = TimeUtils.oneWeekAgo() + val historyDatabase = Amber.instance.getHistoryDatabase(it.npub) val deletedHistory = historyDatabase.dao().deleteOldHistory(oneWeekAgo) if (deletedHistory > 0) { @@ -28,9 +31,24 @@ class ClearLogsWorker(appContext: Context, workerParams: WorkerParameters) : Cor if (deletedLogs > 0) { Log.d(Amber.TAG, "Deleted $deletedLogs old log entries") } + + val database = Amber.instance.getDatabase(it.npub) + database.dao().updateExpiredPermissions(TimeUtils.now()) + val deleted = database.dao().deleteOldApplications(now / 1000) + if (deleted > 0) { + logDatabase.dao().insertLog( + LogEntity( + id = 0, + url = "", + type = "deleteApplications", + message = "Deleted $deleted expired applications", + time = now, + ), + ) + } } catch (e: Exception) { if (e is CancellationException) throw e - Log.e(Amber.TAG, "Error deleting old log entries", e) + Log.e(Amber.TAG, "Error in ClearLogsWorker", e) } } return Result.success()