diff --git a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt index a55765102..055b536d0 100644 --- a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt +++ b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt @@ -32,7 +32,7 @@ class CipherDatabaseAction(applicationContext: Context) { fun getCipherDatabase(databaseUri: Uri, cipherDatabaseResultListener: (CipherDatabaseEntity?) -> Unit) { - ActionDatabaseAsyncTask( + IOActionTask( { cipherDatabaseDao.getByDatabaseUri(databaseUri.toString()) }, @@ -51,7 +51,7 @@ class CipherDatabaseAction(applicationContext: Context) { fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity, cipherDatabaseResultListener: (() -> Unit)? = null) { - ActionDatabaseAsyncTask( + IOActionTask( { val cipherDatabaseRetrieve = cipherDatabaseDao.getByDatabaseUri(cipherDatabaseEntity.databaseUri) @@ -70,7 +70,7 @@ class CipherDatabaseAction(applicationContext: Context) { fun deleteByDatabaseUri(databaseUri: Uri, cipherDatabaseResultListener: (() -> Unit)? = null) { - ActionDatabaseAsyncTask( + IOActionTask( { cipherDatabaseDao.deleteByDatabaseUri(databaseUri.toString()) }, @@ -81,7 +81,7 @@ class CipherDatabaseAction(applicationContext: Context) { } fun deleteAll() { - ActionDatabaseAsyncTask( + IOActionTask( { cipherDatabaseDao.deleteAll() } diff --git a/app/src/main/java/com/kunzisoft/keepass/app/database/FileDatabaseHistoryAction.kt b/app/src/main/java/com/kunzisoft/keepass/app/database/FileDatabaseHistoryAction.kt index 8605ae32a..d0426c9db 100644 --- a/app/src/main/java/com/kunzisoft/keepass/app/database/FileDatabaseHistoryAction.kt +++ b/app/src/main/java/com/kunzisoft/keepass/app/database/FileDatabaseHistoryAction.kt @@ -33,7 +33,7 @@ class FileDatabaseHistoryAction(applicationContext: Context) { fun getFileDatabaseHistory(databaseUri: Uri, fileHistoryResultListener: (fileDatabaseHistoryResult: FileDatabaseHistoryEntity?) -> Unit) { - ActionDatabaseAsyncTask( + IOActionTask( { databaseFileHistoryDao.getByDatabaseUri(databaseUri.toString()) }, @@ -45,7 +45,7 @@ class FileDatabaseHistoryAction(applicationContext: Context) { fun getKeyFileUriByDatabaseUri(databaseUri: Uri, keyFileUriResultListener: (Uri?) -> Unit) { - ActionDatabaseAsyncTask( + IOActionTask( { databaseFileHistoryDao.getByDatabaseUri(databaseUri.toString()) }, @@ -60,7 +60,7 @@ class FileDatabaseHistoryAction(applicationContext: Context) { } fun getAllFileDatabaseHistories(fileHistoryResultListener: (fileDatabaseHistoryResult: List?) -> Unit) { - ActionDatabaseAsyncTask( + IOActionTask( { databaseFileHistoryDao.getAll() }, @@ -80,7 +80,7 @@ class FileDatabaseHistoryAction(applicationContext: Context) { } fun addOrUpdateFileDatabaseHistory(fileDatabaseHistory: FileDatabaseHistoryEntity, unmodifiedAlias: Boolean = false) { - ActionDatabaseAsyncTask( + IOActionTask( { val fileDatabaseHistoryRetrieve = databaseFileHistoryDao.getByDatabaseUri(fileDatabaseHistory.databaseUri) @@ -99,7 +99,7 @@ class FileDatabaseHistoryAction(applicationContext: Context) { fun deleteFileDatabaseHistory(fileDatabaseHistory: FileDatabaseHistoryEntity, fileHistoryDeletedResult: (FileDatabaseHistoryEntity?) -> Unit) { - ActionDatabaseAsyncTask( + IOActionTask( { databaseFileHistoryDao.delete(fileDatabaseHistory) }, @@ -113,7 +113,7 @@ class FileDatabaseHistoryAction(applicationContext: Context) { } fun deleteKeyFileByDatabaseUri(databaseUri: Uri) { - ActionDatabaseAsyncTask( + IOActionTask( { databaseFileHistoryDao.deleteKeyFileByDatabaseUri(databaseUri.toString()) } @@ -121,7 +121,7 @@ class FileDatabaseHistoryAction(applicationContext: Context) { } fun deleteAllKeyFiles() { - ActionDatabaseAsyncTask( + IOActionTask( { databaseFileHistoryDao.deleteAllKeyFiles() } @@ -129,7 +129,7 @@ class FileDatabaseHistoryAction(applicationContext: Context) { } fun deleteAll() { - ActionDatabaseAsyncTask( + IOActionTask( { databaseFileHistoryDao.deleteAll() } diff --git a/app/src/main/java/com/kunzisoft/keepass/app/database/ActionDatabaseAsyncTask.kt b/app/src/main/java/com/kunzisoft/keepass/app/database/IOActionTask.kt similarity index 62% rename from app/src/main/java/com/kunzisoft/keepass/app/database/ActionDatabaseAsyncTask.kt rename to app/src/main/java/com/kunzisoft/keepass/app/database/IOActionTask.kt index 470838cc8..28bd18ed7 100644 --- a/app/src/main/java/com/kunzisoft/keepass/app/database/ActionDatabaseAsyncTask.kt +++ b/app/src/main/java/com/kunzisoft/keepass/app/database/IOActionTask.kt @@ -19,21 +19,27 @@ */ package com.kunzisoft.keepass.app.database -import android.os.AsyncTask +import kotlinx.coroutines.* /** - * Private class to invoke each method in a separate thread + * Class to invoke action in a separate IO thread */ -class ActionDatabaseAsyncTask( +class IOActionTask( private val action: () -> T , - private val afterActionDatabaseListener: ((T?) -> Unit)? = null -) : AsyncTask() { + private val afterActionDatabaseListener: ((T?) -> Unit)? = null) { - override fun doInBackground(vararg args: Void?): T? { - return action.invoke() - } + private val mainScope = CoroutineScope(Dispatchers.Main) - override fun onPostExecute(result: T?) { - afterActionDatabaseListener?.invoke(result) + fun execute() { + mainScope.launch { + withContext(Dispatchers.IO) { + val asyncResult: Deferred = async { + action.invoke() + } + withContext(Dispatchers.Main) { + afterActionDatabaseListener?.invoke(asyncResult.await()) + } + } + } } } \ No newline at end of file