mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
@@ -68,11 +68,10 @@ import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||
import com.kunzisoft.keepass.utils.DexUtil
|
||||
import com.kunzisoft.keepass.utils.MagikeyboardUtil
|
||||
import com.kunzisoft.keepass.utils.MenuUtil
|
||||
import com.kunzisoft.keepass.utils.getParcelableCompat
|
||||
import com.kunzisoft.keepass.utils.parseUri
|
||||
import com.kunzisoft.keepass.utils.UriUtil.isContributingUser
|
||||
import com.kunzisoft.keepass.utils.UriUtil.openUrl
|
||||
import com.kunzisoft.keepass.utils.allowCreateDocumentByStorageAccessFramework
|
||||
import com.kunzisoft.keepass.utils.getParcelableCompat
|
||||
import com.kunzisoft.keepass.view.asError
|
||||
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
||||
import com.kunzisoft.keepass.viewmodels.DatabaseFilesViewModel
|
||||
@@ -180,17 +179,9 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
|
||||
}
|
||||
fileDatabaseHistoryRecyclerView.adapter = mAdapterDatabaseHistory
|
||||
|
||||
// Load default database if not an orientation change
|
||||
if (!(savedInstanceState != null
|
||||
&& savedInstanceState.containsKey(EXTRA_STAY)
|
||||
&& savedInstanceState.getBoolean(EXTRA_STAY, false))) {
|
||||
val databasePath = PreferencesUtil.getDefaultDatabasePath(this)
|
||||
|
||||
databasePath?.parseUri()?.let { databaseFileUri ->
|
||||
launchPasswordActivityWithPath(databaseFileUri)
|
||||
} ?: run {
|
||||
Log.i(TAG, "No default database to prepare")
|
||||
}
|
||||
// Load default database the first time
|
||||
databaseFilesViewModel.doForDefaultDatabase { databaseFileUri ->
|
||||
launchPasswordActivityWithPath(databaseFileUri)
|
||||
}
|
||||
|
||||
// Retrieve the database URI provided by file manager after an orientation change
|
||||
@@ -366,8 +357,6 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
super.onSaveInstanceState(outState)
|
||||
// only to keep the current activity
|
||||
outState.putBoolean(EXTRA_STAY, true)
|
||||
// to retrieve the URI of a created database after an orientation change
|
||||
outState.putParcelable(EXTRA_DATABASE_URI, mDatabaseFileUri)
|
||||
}
|
||||
@@ -442,7 +431,6 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
|
||||
companion object {
|
||||
|
||||
private const val TAG = "FileDbSelectActivity"
|
||||
private const val EXTRA_STAY = "EXTRA_STAY"
|
||||
private const val EXTRA_DATABASE_URI = "EXTRA_DATABASE_URI"
|
||||
|
||||
/*
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.kunzisoft.keepass.viewmodels
|
||||
|
||||
import android.app.Application
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.kunzisoft.keepass.app.App
|
||||
@@ -10,8 +11,8 @@ import com.kunzisoft.keepass.hardware.HardwareKey
|
||||
import com.kunzisoft.keepass.model.DatabaseFile
|
||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||
import com.kunzisoft.keepass.utils.IOActionTask
|
||||
import com.kunzisoft.keepass.utils.parseUri
|
||||
import com.kunzisoft.keepass.utils.UriUtil.releaseUriPermission
|
||||
import com.kunzisoft.keepass.utils.parseUri
|
||||
|
||||
class DatabaseFilesViewModel(application: Application) : AndroidViewModel(application) {
|
||||
|
||||
@@ -25,11 +26,29 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic
|
||||
MutableLiveData<DatabaseFileData>()
|
||||
}
|
||||
|
||||
private var mDefaultDatabaseAlreadyChecked : Boolean = false
|
||||
|
||||
val defaultDatabase: MutableLiveData<Uri?> by lazy {
|
||||
MutableLiveData<Uri?>()
|
||||
}
|
||||
|
||||
fun checkDefaultDatabase() {
|
||||
fun doForDefaultDatabase(action: (defaultDatabaseUri: Uri) -> Unit) {
|
||||
if (!mDefaultDatabaseAlreadyChecked) {
|
||||
mDefaultDatabaseAlreadyChecked = true
|
||||
val context = getApplication<App>().applicationContext
|
||||
PreferencesUtil.getDefaultDatabasePath(context)?.parseUri()?.let { databaseFileUri ->
|
||||
if (FileDatabaseInfo(context, databaseFileUri).exists) {
|
||||
action.invoke(databaseFileUri)
|
||||
} else {
|
||||
Log.e(TAG, "Unable to automatically load a non-accessible file")
|
||||
}
|
||||
} ?: run {
|
||||
Log.i(TAG, "No default database to prepare")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkDefaultDatabase() {
|
||||
IOActionTask(
|
||||
{
|
||||
PreferencesUtil.getDefaultDatabasePath(getApplication<App>().applicationContext)
|
||||
@@ -149,4 +168,8 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic
|
||||
enum class DatabaseFileAction {
|
||||
NONE, ADD, UPDATE, DELETE
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val TAG = DatabaseFilesViewModel::class.java.name
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user