fix: Refactoring result launcher

This commit is contained in:
J-Jamet
2025-09-25 12:42:40 +02:00
parent eed304ec40
commit e075e9018c
7 changed files with 22 additions and 15 deletions

View File

@@ -99,9 +99,6 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
private var mExternalFileHelper: ExternalFileHelper? = null private var mExternalFileHelper: ExternalFileHelper? = null
private var mCredentialActivityResultLauncher: ActivityResultLauncher<Intent>? =
this.buildActivityResultLauncher()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)

View File

@@ -267,9 +267,6 @@ class GroupActivity : DatabaseLockActivity(),
mGroupEditViewModel.selectIcon(icon) mGroupEditViewModel.selectIcon(icon)
} }
private var mCredentialActivityResultLauncher: ActivityResultLauncher<Intent>? =
this.buildActivityResultLauncher()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)

View File

@@ -128,9 +128,6 @@ class MainCredentialActivity : DatabaseModeActivity() {
private var mReadOnly: Boolean = false private var mReadOnly: Boolean = false
private var mForceReadOnly: Boolean = false private var mForceReadOnly: Boolean = false
private var mCredentialActivityResultLauncher: ActivityResultLauncher<Intent>? =
this.buildActivityResultLauncher()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)

View File

@@ -1,11 +1,14 @@
package com.kunzisoft.keepass.activities.legacy package com.kunzisoft.keepass.activities.legacy
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.activity.result.ActivityResultLauncher
import com.kunzisoft.keepass.R import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper 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.EntrySelectionHelper.isIntentSenderMode
import com.kunzisoft.keepass.credentialprovider.SpecialMode import com.kunzisoft.keepass.credentialprovider.SpecialMode
import com.kunzisoft.keepass.credentialprovider.TypeMode import com.kunzisoft.keepass.credentialprovider.TypeMode
@@ -21,10 +24,13 @@ import com.kunzisoft.keepass.view.ToolbarSpecial
abstract class DatabaseModeActivity : DatabaseActivity() { abstract class DatabaseModeActivity : DatabaseActivity() {
protected var mSpecialMode: SpecialMode = SpecialMode.DEFAULT protected var mSpecialMode: SpecialMode = SpecialMode.DEFAULT
private var mTypeMode: TypeMode = TypeMode.DEFAULT protected var mTypeMode: TypeMode = TypeMode.DEFAULT
private var mToolbarSpecial: ToolbarSpecial? = null private var mToolbarSpecial: ToolbarSpecial? = null
protected open var mCredentialActivityResultLauncher: ActivityResultLauncher<Intent>? =
this.buildActivityResultLauncher(mTypeMode)
open fun onDatabaseBackPressed() { open fun onDatabaseBackPressed() {
if (mSpecialMode != SpecialMode.DEFAULT) if (mSpecialMode != SpecialMode.DEFAULT)
onCancelSpecialMode() onCancelSpecialMode()

View File

@@ -56,6 +56,7 @@ object EntrySelectionHelper {
* Finish the activity by passing the result code and by locking the database if necessary * Finish the activity by passing the result code and by locking the database if necessary
*/ */
fun Activity.setActivityResult( fun Activity.setActivityResult(
typeMode: TypeMode,
lockDatabase: Boolean = false, lockDatabase: Boolean = false,
resultCode: Int, resultCode: Int,
data: Intent? = null, data: Intent? = null,
@@ -68,9 +69,15 @@ object EntrySelectionHelper {
} }
this.finish() this.finish()
if (lockDatabase && PreferencesUtil.isAutofillCloseDatabaseEnable(this)) { if (lockDatabase) {
// Close the database when (typeMode) {
this.sendBroadcast(Intent(LOCK_ACTION)) 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 * Used recursively, close each activity with return data
*/ */
fun AppCompatActivity.buildActivityResultLauncher( fun AppCompatActivity.buildActivityResultLauncher(
typeMode: TypeMode,
lockDatabase: Boolean = false, lockDatabase: Boolean = false,
dataTransformation: (data: Intent?) -> Intent? = { it }, dataTransformation: (data: Intent?) -> Intent? = { it },
): ActivityResultLauncher<Intent> { ): ActivityResultLauncher<Intent> {
@@ -86,6 +94,7 @@ object EntrySelectionHelper {
ActivityResultContracts.StartActivityForResult() ActivityResultContracts.StartActivityForResult()
) { ) {
setActivityResult( setActivityResult(
typeMode,
lockDatabase, lockDatabase,
it.resultCode, it.resultCode,
dataTransformation(it.data) dataTransformation(it.data)

View File

@@ -53,8 +53,8 @@ import com.kunzisoft.keepass.view.toastError
@RequiresApi(api = Build.VERSION_CODES.O) @RequiresApi(api = Build.VERSION_CODES.O)
class AutofillLauncherActivity : DatabaseModeActivity() { class AutofillLauncherActivity : DatabaseModeActivity() {
private var mCredentialActivityResultLauncher: ActivityResultLauncher<Intent>? = override var mCredentialActivityResultLauncher: ActivityResultLauncher<Intent>? =
this.buildActivityResultLauncher(lockDatabase = true) this.buildActivityResultLauncher(typeMode = TypeMode.AUTOFILL, lockDatabase = true)
override fun applyCustomStyle(): Boolean { override fun applyCustomStyle(): Boolean {
return false return false

View File

@@ -107,6 +107,7 @@ class PasskeyLauncherActivity : DatabaseLockActivity() {
} }
is PasskeyLauncherViewModel.UIState.SetActivityResult -> { is PasskeyLauncherViewModel.UIState.SetActivityResult -> {
setActivityResult( setActivityResult(
typeMode = TypeMode.PASSKEY,
lockDatabase = uiState.lockDatabase, lockDatabase = uiState.lockDatabase,
resultCode = uiState.resultCode, resultCode = uiState.resultCode,
data = uiState.data data = uiState.data