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