mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Better database creation runnable
This commit is contained in:
@@ -404,26 +404,21 @@ class FileDatabaseSelectActivity : StylishActivity(),
|
||||
keyFileChecked: Boolean, keyFile: Uri?) {
|
||||
|
||||
try {
|
||||
mDatabaseFileUri?.path?.let { databaseFilename ->
|
||||
// Create the new database and start prof
|
||||
UriUtil.parseUriFile(mDatabaseFileUri)?.let { databaseUri ->
|
||||
|
||||
// Create the new database
|
||||
ProgressDialogThread(this@FileDatabaseSelectActivity,
|
||||
{
|
||||
CreateDatabaseRunnable(databaseFilename, App.currentDatabase) { database ->
|
||||
|
||||
UriUtil.parseUriFile(databaseFilename)?.let { databaseUri ->
|
||||
// TODO store database created
|
||||
AssignPasswordInDatabaseRunnable(
|
||||
this@FileDatabaseSelectActivity,
|
||||
database,
|
||||
masterPasswordChecked,
|
||||
masterPassword,
|
||||
keyFileChecked,
|
||||
keyFile,
|
||||
true, // TODO get readonly
|
||||
LaunchGroupActivityFinish(databaseUri)
|
||||
)
|
||||
}
|
||||
}
|
||||
CreateDatabaseRunnable(this@FileDatabaseSelectActivity,
|
||||
databaseUri,
|
||||
App.currentDatabase,
|
||||
masterPasswordChecked,
|
||||
masterPassword,
|
||||
keyFileChecked,
|
||||
keyFile,
|
||||
true, // TODO get readonly
|
||||
LaunchGroupActivityFinish(databaseUri)
|
||||
)
|
||||
},
|
||||
R.string.progress_create)
|
||||
.start()
|
||||
@@ -435,7 +430,6 @@ class FileDatabaseSelectActivity : StylishActivity(),
|
||||
// TODO remove
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private inner class LaunchGroupActivityFinish internal constructor(private val fileURI: Uri) : ActionRunnable() {
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||
import com.kunzisoft.keepass.utils.UriUtil
|
||||
import java.io.IOException
|
||||
|
||||
class AssignPasswordInDatabaseRunnable @JvmOverloads constructor(
|
||||
open class AssignPasswordInDatabaseRunnable @JvmOverloads constructor(
|
||||
context: Context,
|
||||
database: Database,
|
||||
withMasterPassword: Boolean,
|
||||
|
||||
@@ -19,23 +19,31 @@
|
||||
*/
|
||||
package com.kunzisoft.keepass.database.action
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||
|
||||
class CreateDatabaseRunnable(private val mFilename: String,
|
||||
class CreateDatabaseRunnable(context: Context,
|
||||
private val mDatabaseUri: Uri,
|
||||
private val mDatabase: Database,
|
||||
val onDatabaseCreate: (database: Database) -> ActionRunnable?)
|
||||
: ActionRunnable() {
|
||||
withMasterPassword: Boolean,
|
||||
masterPassword: String?,
|
||||
withKeyFile: Boolean,
|
||||
keyFile: Uri?,
|
||||
save: Boolean,
|
||||
actionRunnable: ActionRunnable? = null)
|
||||
: AssignPasswordInDatabaseRunnable(context, mDatabase, withMasterPassword, masterPassword, withKeyFile, keyFile, save, actionRunnable) {
|
||||
|
||||
override fun run() {
|
||||
try {
|
||||
// Create new database record
|
||||
mDatabase.apply {
|
||||
createData(mFilename)
|
||||
createData(mDatabaseUri)
|
||||
// Set Database state
|
||||
loaded = true
|
||||
// Commit changes
|
||||
onDatabaseCreate(this)?.run()
|
||||
super.run()
|
||||
}
|
||||
|
||||
finishRun(true)
|
||||
|
||||
@@ -188,8 +188,8 @@ class Database {
|
||||
this.pwDatabaseV4 = pwDatabaseV4
|
||||
}
|
||||
|
||||
private fun dbNameFromPath(dbPath: String): String {
|
||||
val filename = URLUtil.guessFileName(dbPath, null, null)
|
||||
private fun dbNameFromUri(databaseUri: Uri): String {
|
||||
val filename = URLUtil.guessFileName(databaseUri.path, null, null)
|
||||
if (filename == null || filename.isEmpty()) {
|
||||
return "KeePass Database"
|
||||
}
|
||||
@@ -199,12 +199,10 @@ class Database {
|
||||
} else filename.substring(0, lastExtDot)
|
||||
}
|
||||
|
||||
fun createData(databasePath: String) {
|
||||
fun createData(databaseUri: Uri) {
|
||||
// Always create a new database with the last version
|
||||
setDatabaseV4(PwDatabaseV4(dbNameFromPath(databasePath)))
|
||||
UriUtil.parseUriFile(databasePath)?.let { uri ->
|
||||
this.mUri = uri
|
||||
}
|
||||
setDatabaseV4(PwDatabaseV4(dbNameFromUri(databaseUri)))
|
||||
this.mUri = databaseUri
|
||||
}
|
||||
|
||||
@Throws(IOException::class, InvalidDBException::class)
|
||||
|
||||
Reference in New Issue
Block a user