mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Replace AsyncTask by Coroutines
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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<FileDatabaseHistoryEntity>?) -> 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()
|
||||
}
|
||||
|
||||
@@ -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<T>(
|
||||
class IOActionTask<T>(
|
||||
private val action: () -> T ,
|
||||
private val afterActionDatabaseListener: ((T?) -> Unit)? = null
|
||||
) : AsyncTask<Void, Void, T>() {
|
||||
private val afterActionDatabaseListener: ((T?) -> Unit)? = null) {
|
||||
|
||||
override fun doInBackground(vararg args: Void?): T? {
|
||||
return action.invoke()
|
||||
private val mainScope = CoroutineScope(Dispatchers.Main)
|
||||
|
||||
fun execute() {
|
||||
mainScope.launch {
|
||||
withContext(Dispatchers.IO) {
|
||||
val asyncResult: Deferred<T?> = async {
|
||||
action.invoke()
|
||||
}
|
||||
withContext(Dispatchers.Main) {
|
||||
afterActionDatabaseListener?.invoke(asyncResult.await())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPostExecute(result: T?) {
|
||||
afterActionDatabaseListener?.invoke(result)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user