From bf959c55199fcfd3f1376e50da04da90cf20318b Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Mon, 8 Sep 2025 15:31:40 -0300 Subject: [PATCH] Create a update for fixing the incorrect permissions --- .../java/com/greenart7c3/nostrsigner/Amber.kt | 22 +++++++++++++++++++ .../nostrsigner/database/ApplicationDao.kt | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt index 8fc45548..a78665b5 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/Amber.kt @@ -228,6 +228,7 @@ class Amber : Application(), LifecycleObserver { settings = LocalPreferences.loadSettingsFromEncryptedStorage() LocalPreferences.reloadApp() fixRejectedPermissions() + fixAcceptedPermissions() isStartingApp.value = false checkForNewRelaysAndUpdateAllFilters(true) @@ -287,6 +288,27 @@ class Amber : Application(), LifecycleObserver { } } + suspend fun fixAcceptedPermissions() { + LocalPreferences.allSavedAccounts(this).forEach { account -> + val permissions = getDatabase(account.npub).applicationDao().getAllAcceptedPermissions() + Log.d(TAG, "Found ${permissions.size} accepted permissions") + val localPermissions = + permissions.map { + val isAcceptable = it.acceptable + val acceptUntil = if (isAcceptable) Long.MAX_VALUE / 1000 else 0L + val rejectUntil = if (!isAcceptable) Long.MAX_VALUE / 1000 else 0L + + it.copy( + acceptable = it.acceptable, + acceptUntil = acceptUntil, + rejectUntil = rejectUntil, + rememberType = RememberType.ALWAYS.screenCode, + ) + } + getDatabase(account.npub).applicationDao().insertPermissions(localPermissions) + } + } + fun startService() { try { Log.d(TAG, "Starting ConnectivityService") diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/database/ApplicationDao.kt b/app/src/main/java/com/greenart7c3/nostrsigner/database/ApplicationDao.kt index 2c5042a9..206593b4 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/database/ApplicationDao.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/database/ApplicationDao.kt @@ -79,6 +79,10 @@ interface ApplicationDao { @Transaction fun getAllRejectedPermissions(): List + @Query("SELECT * FROM applicationPermission WHERE acceptable = 1 AND acceptUntil = 0") + @Transaction + fun getAllAcceptedPermissions(): List + @Query("SELECT * FROM applicationPermission WHERE pkKey = :key AND type = :type AND kind = :kind") fun getPermission( key: String,