From 696d2e51979da235c40a529f19cb24ac82e3af40 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 6 Jul 2020 19:55:17 +0200 Subject: [PATCH] Fix RemoteServiceException --- .../database/action/LoadDatabaseRunnable.kt | 4 ---- .../database/action/ProgressDialogThread.kt | 14 -------------- .../DatabaseTaskNotificationService.kt | 13 ++++++++++++- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/LoadDatabaseRunnable.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/LoadDatabaseRunnable.kt index 1f68f59f2..44546af4e 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/LoadDatabaseRunnable.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/LoadDatabaseRunnable.kt @@ -27,7 +27,6 @@ import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction import com.kunzisoft.keepass.database.element.Database import com.kunzisoft.keepass.database.exception.DuplicateUuidDatabaseException import com.kunzisoft.keepass.database.exception.LoadDatabaseException -import com.kunzisoft.keepass.notifications.DatabaseOpenNotificationService import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.tasks.ActionRunnable import com.kunzisoft.keepass.tasks.ProgressTaskUpdater @@ -86,9 +85,6 @@ class LoadDatabaseRunnable(private val context: Context, // Register the current time to init the lock timer PreferencesUtil.saveCurrentTime(context) - - // Start the opening notification - DatabaseOpenNotificationService.start(context) } else { mDatabase.closeAndClear(cacheDirectory) } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDialogThread.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDialogThread.kt index b71e732fa..a96634c74 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDialogThread.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/ProgressDialogThread.kt @@ -27,7 +27,6 @@ import android.os.Build import android.os.Bundle import android.os.IBinder import androidx.fragment.app.FragmentActivity -import com.kunzisoft.keepass.activities.lock.LockingActivity import com.kunzisoft.keepass.app.database.CipherDatabaseEntity import com.kunzisoft.keepass.crypto.keyDerivation.KdfEngine import com.kunzisoft.keepass.database.element.Entry @@ -91,8 +90,6 @@ class ProgressDialogThread(private val activity: FragmentActivity) { private val actionTaskListener = object: DatabaseTaskNotificationService.ActionTaskListener { override fun onStartAction(titleId: Int?, messageId: Int?, warningId: Int?) { TimeoutHelper.temporarilyDisableTimeout() - // Stop the opening notification - DatabaseOpenNotificationService.stop(activity) startDialog(titleId, messageId, warningId) } @@ -106,17 +103,6 @@ class ProgressDialogThread(private val activity: FragmentActivity) { // Remove the progress task stopDialog() TimeoutHelper.releaseTemporarilyDisableTimeout() - - val inTime = if (activity is LockingActivity) { - TimeoutHelper.checkTimeAndLockIfTimeout(activity) - } else { - TimeoutHelper.checkTime(activity) - } - // Start the opening notification if in time - // (databaseOpenService is open manually in Action Open Task) - if (actionTask != ACTION_DATABASE_LOAD_TASK && inTime) { - DatabaseOpenNotificationService.start(activity) - } } } diff --git a/app/src/main/java/com/kunzisoft/keepass/notifications/DatabaseTaskNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/notifications/DatabaseTaskNotificationService.kt index f10d00340..01cae1bf6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/notifications/DatabaseTaskNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/notifications/DatabaseTaskNotificationService.kt @@ -39,6 +39,7 @@ import com.kunzisoft.keepass.database.element.node.NodeId import com.kunzisoft.keepass.database.element.node.Type import com.kunzisoft.keepass.tasks.ActionRunnable import com.kunzisoft.keepass.tasks.ProgressTaskUpdater +import com.kunzisoft.keepass.timeout.TimeoutHelper import com.kunzisoft.keepass.utils.DATABASE_START_TASK_ACTION import com.kunzisoft.keepass.utils.DATABASE_STOP_TASK_ACTION import kotlinx.coroutines.* @@ -66,10 +67,14 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat fun addActionTaskListener(actionTaskListener: ActionTaskListener) { mActionTaskListeners.add(actionTaskListener) + mAllowFinishAction.set(true) } fun removeActionTaskListener(actionTaskListener: ActionTaskListener) { mActionTaskListeners.remove(actionTaskListener) + if (mActionTaskListeners.size == 0) { + mAllowFinishAction.set(false) + } } } @@ -86,7 +91,6 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat } override fun onBind(intent: Intent): IBinder? { - mAllowFinishAction.set(true) return mActionTaskBinder } @@ -203,6 +207,9 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat onExecute: (ProgressTaskUpdater?) -> ActionRunnable?, onPostExecute: (result: ActionRunnable.Result) -> Unit) { mAllowFinishAction.set(false) + + // Stop the opening notification + DatabaseOpenNotificationService.stop(this) onPreExecute.invoke() withContext(Dispatchers.IO) { onExecute.invoke(progressTaskUpdater)?.apply { @@ -221,6 +228,10 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat } withContext(Dispatchers.Main) { onPostExecute.invoke(asyncResult.await()) + // Start the opening notification + if (TimeoutHelper.checkTimeAndLockIfTimeout(this@DatabaseTaskNotificationService)) { + DatabaseOpenNotificationService.start(this@DatabaseTaskNotificationService) + } } } }