From e075e9018c36305ddcb892ee3f0f03e1ba4c0f52 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 25 Sep 2025 12:42:40 +0200 Subject: [PATCH] fix: Refactoring result launcher --- .../activities/FileDatabaseSelectActivity.kt | 3 --- .../kunzisoft/keepass/activities/GroupActivity.kt | 3 --- .../keepass/activities/MainCredentialActivity.kt | 3 --- .../activities/legacy/DatabaseModeActivity.kt | 8 +++++++- .../credentialprovider/EntrySelectionHelper.kt | 15 ++++++++++++--- .../activity/AutofillLauncherActivity.kt | 4 ++-- .../activity/PasskeyLauncherActivity.kt | 1 + 7 files changed, 22 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt index 513db84c5..f3e129984 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt @@ -99,9 +99,6 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(), private var mExternalFileHelper: ExternalFileHelper? = null - private var mCredentialActivityResultLauncher: ActivityResultLauncher? = - this.buildActivityResultLauncher() - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt index 2d301ca0a..057054e1b 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt @@ -267,9 +267,6 @@ class GroupActivity : DatabaseLockActivity(), mGroupEditViewModel.selectIcon(icon) } - private var mCredentialActivityResultLauncher: ActivityResultLauncher? = - this.buildActivityResultLauncher() - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt index 26380cfc9..7dc0255a2 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt @@ -128,9 +128,6 @@ class MainCredentialActivity : DatabaseModeActivity() { private var mReadOnly: Boolean = false private var mForceReadOnly: Boolean = false - private var mCredentialActivityResultLauncher: ActivityResultLauncher? = - this.buildActivityResultLauncher() - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseModeActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseModeActivity.kt index 82e7dbd54..5a181f803 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseModeActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseModeActivity.kt @@ -1,11 +1,14 @@ package com.kunzisoft.keepass.activities.legacy +import android.content.Intent import android.os.Bundle import android.view.View import android.widget.Toast import androidx.activity.OnBackPressedCallback +import androidx.activity.result.ActivityResultLauncher import com.kunzisoft.keepass.R import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper +import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper.buildActivityResultLauncher import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper.isIntentSenderMode import com.kunzisoft.keepass.credentialprovider.SpecialMode import com.kunzisoft.keepass.credentialprovider.TypeMode @@ -21,10 +24,13 @@ import com.kunzisoft.keepass.view.ToolbarSpecial abstract class DatabaseModeActivity : DatabaseActivity() { protected var mSpecialMode: SpecialMode = SpecialMode.DEFAULT - private var mTypeMode: TypeMode = TypeMode.DEFAULT + protected var mTypeMode: TypeMode = TypeMode.DEFAULT private var mToolbarSpecial: ToolbarSpecial? = null + protected open var mCredentialActivityResultLauncher: ActivityResultLauncher? = + this.buildActivityResultLauncher(mTypeMode) + open fun onDatabaseBackPressed() { if (mSpecialMode != SpecialMode.DEFAULT) onCancelSpecialMode() diff --git a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/EntrySelectionHelper.kt b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/EntrySelectionHelper.kt index 12e754ca0..22623e8c4 100644 --- a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/EntrySelectionHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/EntrySelectionHelper.kt @@ -56,6 +56,7 @@ object EntrySelectionHelper { * Finish the activity by passing the result code and by locking the database if necessary */ fun Activity.setActivityResult( + typeMode: TypeMode, lockDatabase: Boolean = false, resultCode: Int, data: Intent? = null, @@ -68,9 +69,15 @@ object EntrySelectionHelper { } this.finish() - if (lockDatabase && PreferencesUtil.isAutofillCloseDatabaseEnable(this)) { - // Close the database - this.sendBroadcast(Intent(LOCK_ACTION)) + if (lockDatabase) { + when (typeMode) { + TypeMode.DEFAULT -> // Close the database + this.sendBroadcast(Intent(LOCK_ACTION)) + TypeMode.MAGIKEYBOARD -> { } + TypeMode.AUTOFILL -> if (PreferencesUtil.isAutofillCloseDatabaseEnable(this)) + this.sendBroadcast(Intent(LOCK_ACTION)) + TypeMode.PASSKEY -> { } + } } } @@ -79,6 +86,7 @@ object EntrySelectionHelper { * Used recursively, close each activity with return data */ fun AppCompatActivity.buildActivityResultLauncher( + typeMode: TypeMode, lockDatabase: Boolean = false, dataTransformation: (data: Intent?) -> Intent? = { it }, ): ActivityResultLauncher { @@ -86,6 +94,7 @@ object EntrySelectionHelper { ActivityResultContracts.StartActivityForResult() ) { setActivityResult( + typeMode, lockDatabase, it.resultCode, dataTransformation(it.data) diff --git a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/AutofillLauncherActivity.kt b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/AutofillLauncherActivity.kt index cac803a1a..bfe49cec6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/AutofillLauncherActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/AutofillLauncherActivity.kt @@ -53,8 +53,8 @@ import com.kunzisoft.keepass.view.toastError @RequiresApi(api = Build.VERSION_CODES.O) class AutofillLauncherActivity : DatabaseModeActivity() { - private var mCredentialActivityResultLauncher: ActivityResultLauncher? = - this.buildActivityResultLauncher(lockDatabase = true) + override var mCredentialActivityResultLauncher: ActivityResultLauncher? = + this.buildActivityResultLauncher(typeMode = TypeMode.AUTOFILL, lockDatabase = true) override fun applyCustomStyle(): Boolean { return false diff --git a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/PasskeyLauncherActivity.kt b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/PasskeyLauncherActivity.kt index 519bf2d11..0ff8b2a5d 100644 --- a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/PasskeyLauncherActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/PasskeyLauncherActivity.kt @@ -107,6 +107,7 @@ class PasskeyLauncherActivity : DatabaseLockActivity() { } is PasskeyLauncherViewModel.UIState.SetActivityResult -> { setActivityResult( + typeMode = TypeMode.PASSKEY, lockDatabase = uiState.lockDatabase, resultCode = uiState.resultCode, data = uiState.data