mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Merge branch 'feature/Merge_Action_tasks_#628' into develop
This commit is contained in:
@@ -215,10 +215,9 @@ class ProgressDialogThread(private val activity: FragmentActivity) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun start(bundle: Bundle? = null, actionTask: String) {
|
private fun start(bundle: Bundle? = null, actionTask: String) {
|
||||||
activity.stopService(intentDatabaseTask)
|
|
||||||
if (bundle != null)
|
if (bundle != null)
|
||||||
intentDatabaseTask.putExtras(bundle)
|
intentDatabaseTask.putExtras(bundle)
|
||||||
intentDatabaseTask.action = actionTask
|
intentDatabaseTask.action = actionTask
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
activity.startForegroundService(intentDatabaseTask)
|
activity.startForegroundService(intentDatabaseTask)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,122 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019 Jeremy Jamet / Kunzisoft.
|
|
||||||
*
|
|
||||||
* This file is part of KeePassDX.
|
|
||||||
*
|
|
||||||
* KeePassDX is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* KeePassDX is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package com.kunzisoft.keepass.notifications
|
|
||||||
|
|
||||||
import android.app.PendingIntent
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.os.Build
|
|
||||||
import android.os.IBinder
|
|
||||||
import com.kunzisoft.keepass.R
|
|
||||||
import com.kunzisoft.keepass.activities.GroupActivity
|
|
||||||
import com.kunzisoft.keepass.database.element.Database
|
|
||||||
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
|
||||||
import com.kunzisoft.keepass.utils.LOCK_ACTION
|
|
||||||
import com.kunzisoft.keepass.utils.closeDatabase
|
|
||||||
|
|
||||||
class DatabaseOpenNotificationService: LockNotificationService() {
|
|
||||||
|
|
||||||
override val notificationId: Int = 340
|
|
||||||
|
|
||||||
private fun stopNotificationAndSendLock() {
|
|
||||||
// Send lock action
|
|
||||||
sendBroadcast(Intent(LOCK_ACTION))
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun actionOnLock() {
|
|
||||||
closeDatabase()
|
|
||||||
// Remove the lock timer (no more needed if it exists)
|
|
||||||
TimeoutHelper.cancelLockTimer(this)
|
|
||||||
// Service is stopped after receive the broadcast
|
|
||||||
super.actionOnLock()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun checkIntent(intent: Intent?) {
|
|
||||||
val notificationBuilder = buildNewNotification().apply {
|
|
||||||
setSmallIcon(R.drawable.notification_ic_database_open)
|
|
||||||
setContentTitle(getString(R.string.database_opened))
|
|
||||||
setAutoCancel(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
when(intent?.action) {
|
|
||||||
ACTION_CLOSE_DATABASE -> {
|
|
||||||
startForeground(notificationId, notificationBuilder.build())
|
|
||||||
stopNotificationAndSendLock()
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
val databaseIntent = Intent(this, GroupActivity::class.java)
|
|
||||||
var pendingDatabaseFlag = 0
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
||||||
pendingDatabaseFlag = PendingIntent.FLAG_IMMUTABLE
|
|
||||||
}
|
|
||||||
val pendingDatabaseIntent = PendingIntent.getActivity(this, 0, databaseIntent, pendingDatabaseFlag)
|
|
||||||
val deleteIntent = Intent(this, DatabaseOpenNotificationService::class.java).apply {
|
|
||||||
action = ACTION_CLOSE_DATABASE
|
|
||||||
}
|
|
||||||
val pendingDeleteIntent = PendingIntent.getService(this, 0, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
|
||||||
|
|
||||||
val database = Database.getInstance()
|
|
||||||
if (database.loaded) {
|
|
||||||
startForeground(notificationId, notificationBuilder.apply {
|
|
||||||
setContentText(database.name + " (" + database.version + ")")
|
|
||||||
setContentIntent(pendingDatabaseIntent)
|
|
||||||
// Unfortunately swipe is disabled in lollipop+
|
|
||||||
setDeleteIntent(pendingDeleteIntent)
|
|
||||||
addAction(R.drawable.ic_lock_white_24dp, getString(R.string.lock),
|
|
||||||
pendingDeleteIntent)
|
|
||||||
}.build())
|
|
||||||
} else {
|
|
||||||
startForeground(notificationId, notificationBuilder.build())
|
|
||||||
stopSelf()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onBind(intent: Intent): IBinder? {
|
|
||||||
checkIntent(intent)
|
|
||||||
return super.onBind(intent)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
|
||||||
super.onStartCommand(intent, flags, startId)
|
|
||||||
checkIntent(intent)
|
|
||||||
return START_STICKY
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
const val ACTION_CLOSE_DATABASE = "ACTION_CLOSE_DATABASE"
|
|
||||||
|
|
||||||
fun start(context: Context) {
|
|
||||||
// Start the opening notification, keep it active to receive lock
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
context.startForegroundService(Intent(context, DatabaseOpenNotificationService::class.java))
|
|
||||||
} else {
|
|
||||||
context.startService(Intent(context, DatabaseOpenNotificationService::class.java))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun stop(context: Context) {
|
|
||||||
// Stop the opening notification
|
|
||||||
context.stopService(Intent(context, DatabaseOpenNotificationService::class.java))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -19,12 +19,15 @@
|
|||||||
*/
|
*/
|
||||||
package com.kunzisoft.keepass.notifications
|
package com.kunzisoft.keepass.notifications
|
||||||
|
|
||||||
|
import android.app.PendingIntent
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Binder
|
import android.os.Binder
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
|
import com.kunzisoft.keepass.activities.GroupActivity
|
||||||
import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
|
import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
|
||||||
import com.kunzisoft.keepass.database.action.*
|
import com.kunzisoft.keepass.database.action.*
|
||||||
import com.kunzisoft.keepass.database.action.history.DeleteEntryHistoryDatabaseRunnable
|
import com.kunzisoft.keepass.database.action.history.DeleteEntryHistoryDatabaseRunnable
|
||||||
@@ -42,22 +45,28 @@ import com.kunzisoft.keepass.tasks.ProgressTaskUpdater
|
|||||||
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
||||||
import com.kunzisoft.keepass.utils.DATABASE_START_TASK_ACTION
|
import com.kunzisoft.keepass.utils.DATABASE_START_TASK_ACTION
|
||||||
import com.kunzisoft.keepass.utils.DATABASE_STOP_TASK_ACTION
|
import com.kunzisoft.keepass.utils.DATABASE_STOP_TASK_ACTION
|
||||||
|
import com.kunzisoft.keepass.utils.LOCK_ACTION
|
||||||
|
import com.kunzisoft.keepass.utils.closeDatabase
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdater {
|
open class DatabaseTaskNotificationService : LockNotificationService(), ProgressTaskUpdater {
|
||||||
|
|
||||||
override val notificationId: Int = 575
|
override val notificationId: Int = 575
|
||||||
|
|
||||||
|
private lateinit var mDatabase: Database
|
||||||
|
|
||||||
private val mainScope = CoroutineScope(Dispatchers.Main)
|
private val mainScope = CoroutineScope(Dispatchers.Main)
|
||||||
|
|
||||||
private var mActionTaskBinder = ActionTaskBinder()
|
private var mActionTaskBinder = ActionTaskBinder()
|
||||||
private var mActionTaskListeners = LinkedList<ActionTaskListener>()
|
private var mActionTaskListeners = LinkedList<ActionTaskListener>()
|
||||||
private var mAllowFinishAction = AtomicBoolean()
|
private var mAllowFinishAction = AtomicBoolean()
|
||||||
|
private var mActionRunning = false
|
||||||
|
|
||||||
private var mTitleId: Int? = null
|
private var mIconId: Int = R.drawable.notification_ic_database_load
|
||||||
|
private var mTitleId: Int = R.string.database_opened
|
||||||
private var mMessageId: Int? = null
|
private var mMessageId: Int? = null
|
||||||
private var mWarningId: Int? = null
|
private var mWarningId: Int? = null
|
||||||
|
|
||||||
@@ -66,8 +75,8 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
fun getService(): DatabaseTaskNotificationService = this@DatabaseTaskNotificationService
|
fun getService(): DatabaseTaskNotificationService = this@DatabaseTaskNotificationService
|
||||||
|
|
||||||
fun addActionTaskListener(actionTaskListener: ActionTaskListener) {
|
fun addActionTaskListener(actionTaskListener: ActionTaskListener) {
|
||||||
mActionTaskListeners.add(actionTaskListener)
|
|
||||||
mAllowFinishAction.set(true)
|
mAllowFinishAction.set(true)
|
||||||
|
mActionTaskListeners.add(actionTaskListener)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun removeActionTaskListener(actionTaskListener: ActionTaskListener) {
|
fun removeActionTaskListener(actionTaskListener: ActionTaskListener) {
|
||||||
@@ -84,66 +93,41 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
fun onStopAction(actionTask: String, result: ActionRunnable.Result)
|
fun onStopAction(actionTask: String, result: ActionRunnable.Result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force to call [ActionTaskListener.onStartAction] if the action is still running
|
||||||
|
*/
|
||||||
fun checkAction() {
|
fun checkAction() {
|
||||||
mActionTaskListeners.forEach { actionTaskListener ->
|
if (mActionRunning) {
|
||||||
actionTaskListener.onStartAction(mTitleId, mMessageId, mWarningId)
|
mActionTaskListeners.forEach { actionTaskListener ->
|
||||||
}
|
actionTaskListener.onStartAction(mTitleId, mMessageId, mWarningId)
|
||||||
}
|
|
||||||
|
|
||||||
private fun buildNotification(intent: Intent?) {
|
|
||||||
var saveAction = true
|
|
||||||
if (intent != null && intent.hasExtra(SAVE_DATABASE_KEY)) {
|
|
||||||
saveAction = intent.getBooleanExtra(SAVE_DATABASE_KEY, saveAction)
|
|
||||||
}
|
|
||||||
|
|
||||||
val intentAction = intent?.action
|
|
||||||
val titleId: Int = when (intentAction) {
|
|
||||||
ACTION_DATABASE_CREATE_TASK -> R.string.creating_database
|
|
||||||
ACTION_DATABASE_LOAD_TASK -> R.string.loading_database
|
|
||||||
else -> {
|
|
||||||
if (saveAction)
|
|
||||||
R.string.saving_database
|
|
||||||
else
|
|
||||||
R.string.command_execution
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val messageId: Int? = when (intentAction) {
|
|
||||||
ACTION_DATABASE_LOAD_TASK -> null
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
val warningId: Int? =
|
|
||||||
if (!saveAction
|
|
||||||
|| intentAction == ACTION_DATABASE_LOAD_TASK)
|
|
||||||
null
|
|
||||||
else
|
|
||||||
R.string.do_not_kill_app
|
|
||||||
|
|
||||||
// Assign elements for updates
|
|
||||||
mTitleId = titleId
|
|
||||||
mMessageId = messageId
|
|
||||||
mWarningId = warningId
|
|
||||||
// Create the notification
|
|
||||||
startForeground(notificationId, buildNewNotification()
|
|
||||||
.setSmallIcon(R.drawable.notification_ic_database_load)
|
|
||||||
.setContentTitle(getString(intent?.getIntExtra(DATABASE_TASK_TITLE_KEY, titleId) ?: titleId))
|
|
||||||
.setAutoCancel(false)
|
|
||||||
.setContentIntent(null).build())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBind(intent: Intent): IBinder? {
|
override fun onBind(intent: Intent): IBinder? {
|
||||||
buildNotification(intent)
|
super.onBind(intent)
|
||||||
return mActionTaskBinder
|
return mActionTaskBinder
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||||
super.onStartCommand(intent, flags, startId)
|
super.onStartCommand(intent, flags, startId)
|
||||||
|
|
||||||
buildNotification(intent)
|
mDatabase = Database.getInstance()
|
||||||
|
|
||||||
if (intent == null) return START_REDELIVER_INTENT
|
// Create the notification
|
||||||
|
buildMessage(intent)
|
||||||
|
|
||||||
val intentAction = intent.action
|
val intentAction = intent?.action
|
||||||
val actionRunnable: ActionRunnable? = when (intentAction) {
|
|
||||||
|
if (intentAction == null && !mDatabase.loaded) {
|
||||||
|
stopSelf()
|
||||||
|
}
|
||||||
|
if (intentAction == ACTION_DATABASE_CLOSE) {
|
||||||
|
// Send lock action
|
||||||
|
sendBroadcast(Intent(LOCK_ACTION))
|
||||||
|
}
|
||||||
|
|
||||||
|
val actionRunnable: ActionRunnable? = when (intentAction) {
|
||||||
ACTION_DATABASE_CREATE_TASK -> buildDatabaseCreateActionTask(intent)
|
ACTION_DATABASE_CREATE_TASK -> buildDatabaseCreateActionTask(intent)
|
||||||
ACTION_DATABASE_LOAD_TASK -> buildDatabaseLoadActionTask(intent)
|
ACTION_DATABASE_LOAD_TASK -> buildDatabaseLoadActionTask(intent)
|
||||||
ACTION_DATABASE_ASSIGN_PASSWORD_TASK -> buildDatabaseAssignPasswordActionTask(intent)
|
ACTION_DATABASE_ASSIGN_PASSWORD_TASK -> buildDatabaseAssignPasswordActionTask(intent)
|
||||||
@@ -172,12 +156,13 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
actionRunnable?.let { actionRunnableNotNull ->
|
// Build and launch the action
|
||||||
|
if (actionRunnable != null) {
|
||||||
// Build and launch the action
|
|
||||||
mainScope.launch {
|
mainScope.launch {
|
||||||
executeAction(this@DatabaseTaskNotificationService,
|
executeAction(this@DatabaseTaskNotificationService,
|
||||||
{
|
{
|
||||||
|
mActionRunning = true
|
||||||
|
|
||||||
sendBroadcast(Intent(DATABASE_START_TASK_ACTION).apply {
|
sendBroadcast(Intent(DATABASE_START_TASK_ACTION).apply {
|
||||||
putExtra(DATABASE_TASK_TITLE_KEY, mTitleId)
|
putExtra(DATABASE_TASK_TITLE_KEY, mTitleId)
|
||||||
putExtra(DATABASE_TASK_MESSAGE_KEY, mMessageId)
|
putExtra(DATABASE_TASK_MESSAGE_KEY, mMessageId)
|
||||||
@@ -190,22 +175,143 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
actionRunnableNotNull
|
actionRunnable
|
||||||
},
|
},
|
||||||
{ result ->
|
{ result ->
|
||||||
mActionTaskListeners.forEach { actionTaskListener ->
|
mActionTaskListeners.forEach { actionTaskListener ->
|
||||||
actionTaskListener.onStopAction(intentAction!!, result)
|
actionTaskListener.onStopAction(intentAction!!, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
removeIntentData(intent)
|
||||||
|
buildMessage(intent)
|
||||||
|
|
||||||
sendBroadcast(Intent(DATABASE_STOP_TASK_ACTION))
|
sendBroadcast(Intent(DATABASE_STOP_TASK_ACTION))
|
||||||
|
|
||||||
stopSelf()
|
mActionRunning = false
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
// Relaunch action if failed
|
||||||
|
return START_REDELIVER_INTENT
|
||||||
}
|
}
|
||||||
|
|
||||||
return START_REDELIVER_INTENT
|
return START_STICKY
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun buildMessage(intent: Intent?) {
|
||||||
|
// Assign elements for updates
|
||||||
|
val intentAction = intent?.action
|
||||||
|
|
||||||
|
var saveAction = false
|
||||||
|
if (intent != null && intent.hasExtra(SAVE_DATABASE_KEY)) {
|
||||||
|
saveAction = intent.getBooleanExtra(SAVE_DATABASE_KEY, saveAction)
|
||||||
|
}
|
||||||
|
|
||||||
|
mIconId = if (intentAction == null)
|
||||||
|
R.drawable.notification_ic_database_open
|
||||||
|
else
|
||||||
|
R.drawable.notification_ic_database_load
|
||||||
|
|
||||||
|
mTitleId = when {
|
||||||
|
saveAction -> {
|
||||||
|
R.string.saving_database
|
||||||
|
}
|
||||||
|
intentAction == null -> {
|
||||||
|
R.string.database_opened
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
when (intentAction) {
|
||||||
|
ACTION_DATABASE_CREATE_TASK -> R.string.creating_database
|
||||||
|
ACTION_DATABASE_LOAD_TASK -> R.string.loading_database
|
||||||
|
ACTION_DATABASE_SAVE -> R.string.saving_database
|
||||||
|
else -> {
|
||||||
|
R.string.command_execution
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mMessageId = when (intentAction) {
|
||||||
|
ACTION_DATABASE_LOAD_TASK -> null
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
|
||||||
|
mWarningId =
|
||||||
|
if (!saveAction
|
||||||
|
|| intentAction == ACTION_DATABASE_LOAD_TASK)
|
||||||
|
null
|
||||||
|
else
|
||||||
|
R.string.do_not_kill_app
|
||||||
|
|
||||||
|
val notificationBuilder = buildNewNotification().apply {
|
||||||
|
setSmallIcon(mIconId)
|
||||||
|
intent?.let {
|
||||||
|
setContentTitle(getString(intent.getIntExtra(DATABASE_TASK_TITLE_KEY, mTitleId)))
|
||||||
|
}
|
||||||
|
setAutoCancel(false)
|
||||||
|
setContentIntent(null)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (intentAction == null) {
|
||||||
|
// Database is normally open
|
||||||
|
if (mDatabase.loaded) {
|
||||||
|
// Build Intents for notification action
|
||||||
|
var pendingDatabaseFlag = 0
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
pendingDatabaseFlag = PendingIntent.FLAG_IMMUTABLE
|
||||||
|
}
|
||||||
|
val pendingDatabaseIntent = PendingIntent.getActivity(this,
|
||||||
|
0,
|
||||||
|
Intent(this, GroupActivity::class.java),
|
||||||
|
pendingDatabaseFlag)
|
||||||
|
val deleteIntent = Intent(this, DatabaseTaskNotificationService::class.java).apply {
|
||||||
|
action = ACTION_DATABASE_CLOSE
|
||||||
|
}
|
||||||
|
val pendingDeleteIntent = PendingIntent.getService(this, 0, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
|
// Add actions in notifications
|
||||||
|
notificationBuilder.apply {
|
||||||
|
setContentText(mDatabase.name + " (" + mDatabase.version + ")")
|
||||||
|
setContentIntent(pendingDatabaseIntent)
|
||||||
|
// Unfortunately swipe is disabled in lollipop+
|
||||||
|
setDeleteIntent(pendingDeleteIntent)
|
||||||
|
addAction(R.drawable.ic_lock_white_24dp, getString(R.string.lock),
|
||||||
|
pendingDeleteIntent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the notification
|
||||||
|
startForeground(notificationId, notificationBuilder.build())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun removeIntentData(intent: Intent?) {
|
||||||
|
intent?.action = null
|
||||||
|
|
||||||
|
intent?.removeExtra(DATABASE_TASK_TITLE_KEY)
|
||||||
|
intent?.removeExtra(DATABASE_TASK_MESSAGE_KEY)
|
||||||
|
intent?.removeExtra(DATABASE_TASK_WARNING_KEY)
|
||||||
|
|
||||||
|
intent?.removeExtra(DATABASE_URI_KEY)
|
||||||
|
intent?.removeExtra(MASTER_PASSWORD_CHECKED_KEY)
|
||||||
|
intent?.removeExtra(MASTER_PASSWORD_KEY)
|
||||||
|
intent?.removeExtra(KEY_FILE_CHECKED_KEY)
|
||||||
|
intent?.removeExtra(KEY_FILE_KEY)
|
||||||
|
intent?.removeExtra(READ_ONLY_KEY)
|
||||||
|
intent?.removeExtra(CIPHER_ENTITY_KEY)
|
||||||
|
intent?.removeExtra(FIX_DUPLICATE_UUID_KEY)
|
||||||
|
intent?.removeExtra(GROUP_KEY)
|
||||||
|
intent?.removeExtra(ENTRY_KEY)
|
||||||
|
intent?.removeExtra(GROUP_ID_KEY)
|
||||||
|
intent?.removeExtra(ENTRY_ID_KEY)
|
||||||
|
intent?.removeExtra(GROUPS_ID_KEY)
|
||||||
|
intent?.removeExtra(ENTRIES_ID_KEY)
|
||||||
|
intent?.removeExtra(PARENT_ID_KEY)
|
||||||
|
intent?.removeExtra(ENTRY_HISTORY_POSITION_KEY)
|
||||||
|
intent?.removeExtra(SAVE_DATABASE_KEY)
|
||||||
|
intent?.removeExtra(OLD_NODES_KEY)
|
||||||
|
intent?.removeExtra(NEW_NODES_KEY)
|
||||||
|
intent?.removeExtra(OLD_ELEMENT_KEY)
|
||||||
|
intent?.removeExtra(NEW_ELEMENT_KEY)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -241,7 +347,9 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
TimeoutHelper.releaseTemporarilyDisableTimeout()
|
TimeoutHelper.releaseTemporarilyDisableTimeout()
|
||||||
// Start the opening notification
|
// Start the opening notification
|
||||||
if (TimeoutHelper.checkTimeAndLockIfTimeout(this@DatabaseTaskNotificationService)) {
|
if (TimeoutHelper.checkTimeAndLockIfTimeout(this@DatabaseTaskNotificationService)) {
|
||||||
DatabaseOpenNotificationService.start(this@DatabaseTaskNotificationService)
|
if (!mDatabase.loaded) {
|
||||||
|
stopSelf()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -256,6 +364,16 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun actionOnLock() {
|
||||||
|
if (!TimeoutHelper.temporarilyDisableTimeout) {
|
||||||
|
closeDatabase()
|
||||||
|
// Remove the lock timer (no more needed if it exists)
|
||||||
|
TimeoutHelper.cancelLockTimer(this)
|
||||||
|
// Service is stopped after receive the broadcast
|
||||||
|
super.actionOnLock()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun buildDatabaseCreateActionTask(intent: Intent): ActionRunnable? {
|
private fun buildDatabaseCreateActionTask(intent: Intent): ActionRunnable? {
|
||||||
|
|
||||||
if (intent.hasExtra(DATABASE_URI_KEY)
|
if (intent.hasExtra(DATABASE_URI_KEY)
|
||||||
@@ -271,7 +389,7 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
return null
|
return null
|
||||||
|
|
||||||
return CreateDatabaseRunnable(this,
|
return CreateDatabaseRunnable(this,
|
||||||
Database.getInstance(),
|
mDatabase,
|
||||||
databaseUri,
|
databaseUri,
|
||||||
getString(R.string.database_default_name),
|
getString(R.string.database_default_name),
|
||||||
getString(R.string.database),
|
getString(R.string.database),
|
||||||
@@ -294,7 +412,6 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(CIPHER_ENTITY_KEY)
|
&& intent.hasExtra(CIPHER_ENTITY_KEY)
|
||||||
&& intent.hasExtra(FIX_DUPLICATE_UUID_KEY)
|
&& intent.hasExtra(FIX_DUPLICATE_UUID_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
val databaseUri: Uri? = intent.getParcelableExtra(DATABASE_URI_KEY)
|
val databaseUri: Uri? = intent.getParcelableExtra(DATABASE_URI_KEY)
|
||||||
val masterPassword: String? = intent.getStringExtra(MASTER_PASSWORD_KEY)
|
val masterPassword: String? = intent.getStringExtra(MASTER_PASSWORD_KEY)
|
||||||
val keyFileUri: Uri? = intent.getParcelableExtra(KEY_FILE_KEY)
|
val keyFileUri: Uri? = intent.getParcelableExtra(KEY_FILE_KEY)
|
||||||
@@ -306,7 +423,7 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
|
|
||||||
return LoadDatabaseRunnable(
|
return LoadDatabaseRunnable(
|
||||||
this,
|
this,
|
||||||
database,
|
mDatabase,
|
||||||
databaseUri,
|
databaseUri,
|
||||||
masterPassword,
|
masterPassword,
|
||||||
keyFileUri,
|
keyFileUri,
|
||||||
@@ -338,7 +455,7 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
) {
|
) {
|
||||||
val databaseUri: Uri = intent.getParcelableExtra(DATABASE_URI_KEY) ?: return null
|
val databaseUri: Uri = intent.getParcelableExtra(DATABASE_URI_KEY) ?: return null
|
||||||
AssignPasswordInDatabaseRunnable(this,
|
AssignPasswordInDatabaseRunnable(this,
|
||||||
Database.getInstance(),
|
mDatabase,
|
||||||
databaseUri,
|
databaseUri,
|
||||||
intent.getBooleanExtra(MASTER_PASSWORD_CHECKED_KEY, false),
|
intent.getBooleanExtra(MASTER_PASSWORD_CHECKED_KEY, false),
|
||||||
intent.getStringExtra(MASTER_PASSWORD_KEY),
|
intent.getStringExtra(MASTER_PASSWORD_KEY),
|
||||||
@@ -365,7 +482,6 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(PARENT_ID_KEY)
|
&& intent.hasExtra(PARENT_ID_KEY)
|
||||||
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
val parentId: NodeId<*>? = intent.getParcelableExtra(PARENT_ID_KEY)
|
val parentId: NodeId<*>? = intent.getParcelableExtra(PARENT_ID_KEY)
|
||||||
val newGroup: Group? = intent.getParcelableExtra(GROUP_KEY)
|
val newGroup: Group? = intent.getParcelableExtra(GROUP_KEY)
|
||||||
|
|
||||||
@@ -373,9 +489,9 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
|| newGroup == null)
|
|| newGroup == null)
|
||||||
return null
|
return null
|
||||||
|
|
||||||
database.getGroupById(parentId)?.let { parent ->
|
mDatabase.getGroupById(parentId)?.let { parent ->
|
||||||
AddGroupRunnable(this,
|
AddGroupRunnable(this,
|
||||||
database,
|
mDatabase,
|
||||||
newGroup,
|
newGroup,
|
||||||
parent,
|
parent,
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
||||||
@@ -391,7 +507,6 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(GROUP_KEY)
|
&& intent.hasExtra(GROUP_KEY)
|
||||||
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
val groupId: NodeId<*>? = intent.getParcelableExtra(GROUP_ID_KEY)
|
val groupId: NodeId<*>? = intent.getParcelableExtra(GROUP_ID_KEY)
|
||||||
val newGroup: Group? = intent.getParcelableExtra(GROUP_KEY)
|
val newGroup: Group? = intent.getParcelableExtra(GROUP_KEY)
|
||||||
|
|
||||||
@@ -399,9 +514,9 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
|| newGroup == null)
|
|| newGroup == null)
|
||||||
return null
|
return null
|
||||||
|
|
||||||
database.getGroupById(groupId)?.let { oldGroup ->
|
mDatabase.getGroupById(groupId)?.let { oldGroup ->
|
||||||
UpdateGroupRunnable(this,
|
UpdateGroupRunnable(this,
|
||||||
database,
|
mDatabase,
|
||||||
oldGroup,
|
oldGroup,
|
||||||
newGroup,
|
newGroup,
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
||||||
@@ -417,7 +532,6 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(PARENT_ID_KEY)
|
&& intent.hasExtra(PARENT_ID_KEY)
|
||||||
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
val parentId: NodeId<*>? = intent.getParcelableExtra(PARENT_ID_KEY)
|
val parentId: NodeId<*>? = intent.getParcelableExtra(PARENT_ID_KEY)
|
||||||
val newEntry: Entry? = intent.getParcelableExtra(ENTRY_KEY)
|
val newEntry: Entry? = intent.getParcelableExtra(ENTRY_KEY)
|
||||||
|
|
||||||
@@ -425,9 +539,9 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
|| newEntry == null)
|
|| newEntry == null)
|
||||||
return null
|
return null
|
||||||
|
|
||||||
database.getGroupById(parentId)?.let { parent ->
|
mDatabase.getGroupById(parentId)?.let { parent ->
|
||||||
AddEntryRunnable(this,
|
AddEntryRunnable(this,
|
||||||
database,
|
mDatabase,
|
||||||
newEntry,
|
newEntry,
|
||||||
parent,
|
parent,
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
||||||
@@ -443,7 +557,6 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(ENTRY_KEY)
|
&& intent.hasExtra(ENTRY_KEY)
|
||||||
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
val entryId: NodeId<UUID>? = intent.getParcelableExtra(ENTRY_ID_KEY)
|
val entryId: NodeId<UUID>? = intent.getParcelableExtra(ENTRY_ID_KEY)
|
||||||
val newEntry: Entry? = intent.getParcelableExtra(ENTRY_KEY)
|
val newEntry: Entry? = intent.getParcelableExtra(ENTRY_KEY)
|
||||||
|
|
||||||
@@ -451,9 +564,9 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
|| newEntry == null)
|
|| newEntry == null)
|
||||||
return null
|
return null
|
||||||
|
|
||||||
database.getEntryById(entryId)?.let { oldEntry ->
|
mDatabase.getEntryById(entryId)?.let { oldEntry ->
|
||||||
UpdateEntryRunnable(this,
|
UpdateEntryRunnable(this,
|
||||||
database,
|
mDatabase,
|
||||||
oldEntry,
|
oldEntry,
|
||||||
newEntry,
|
newEntry,
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
||||||
@@ -470,13 +583,12 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(PARENT_ID_KEY)
|
&& intent.hasExtra(PARENT_ID_KEY)
|
||||||
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
val parentId: NodeId<*> = intent.getParcelableExtra(PARENT_ID_KEY) ?: return null
|
val parentId: NodeId<*> = intent.getParcelableExtra(PARENT_ID_KEY) ?: return null
|
||||||
|
|
||||||
database.getGroupById(parentId)?.let { newParent ->
|
mDatabase.getGroupById(parentId)?.let { newParent ->
|
||||||
CopyNodesRunnable(this,
|
CopyNodesRunnable(this,
|
||||||
database,
|
mDatabase,
|
||||||
getListNodesFromBundle(database, intent.extras!!),
|
getListNodesFromBundle(mDatabase, intent.extras!!),
|
||||||
newParent,
|
newParent,
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
||||||
AfterActionNodesRunnable())
|
AfterActionNodesRunnable())
|
||||||
@@ -492,13 +604,12 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(PARENT_ID_KEY)
|
&& intent.hasExtra(PARENT_ID_KEY)
|
||||||
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
val parentId: NodeId<*> = intent.getParcelableExtra(PARENT_ID_KEY) ?: return null
|
val parentId: NodeId<*> = intent.getParcelableExtra(PARENT_ID_KEY) ?: return null
|
||||||
|
|
||||||
database.getGroupById(parentId)?.let { newParent ->
|
mDatabase.getGroupById(parentId)?.let { newParent ->
|
||||||
MoveNodesRunnable(this,
|
MoveNodesRunnable(this,
|
||||||
database,
|
mDatabase,
|
||||||
getListNodesFromBundle(database, intent.extras!!),
|
getListNodesFromBundle(mDatabase, intent.extras!!),
|
||||||
newParent,
|
newParent,
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
||||||
AfterActionNodesRunnable())
|
AfterActionNodesRunnable())
|
||||||
@@ -513,10 +624,9 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(ENTRIES_ID_KEY)
|
&& intent.hasExtra(ENTRIES_ID_KEY)
|
||||||
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
DeleteNodesRunnable(this,
|
DeleteNodesRunnable(this,
|
||||||
database,
|
mDatabase,
|
||||||
getListNodesFromBundle(database, intent.extras!!),
|
getListNodesFromBundle(mDatabase, intent.extras!!),
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
|
||||||
AfterActionNodesRunnable())
|
AfterActionNodesRunnable())
|
||||||
} else {
|
} else {
|
||||||
@@ -529,12 +639,11 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(ENTRY_HISTORY_POSITION_KEY)
|
&& intent.hasExtra(ENTRY_HISTORY_POSITION_KEY)
|
||||||
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
val entryId: NodeId<UUID> = intent.getParcelableExtra(ENTRY_ID_KEY) ?: return null
|
val entryId: NodeId<UUID> = intent.getParcelableExtra(ENTRY_ID_KEY) ?: return null
|
||||||
|
|
||||||
database.getEntryById(entryId)?.let { mainEntry ->
|
mDatabase.getEntryById(entryId)?.let { mainEntry ->
|
||||||
RestoreEntryHistoryDatabaseRunnable(this,
|
RestoreEntryHistoryDatabaseRunnable(this,
|
||||||
database,
|
mDatabase,
|
||||||
mainEntry,
|
mainEntry,
|
||||||
intent.getIntExtra(ENTRY_HISTORY_POSITION_KEY, -1),
|
intent.getIntExtra(ENTRY_HISTORY_POSITION_KEY, -1),
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false))
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false))
|
||||||
@@ -549,12 +658,11 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
&& intent.hasExtra(ENTRY_HISTORY_POSITION_KEY)
|
&& intent.hasExtra(ENTRY_HISTORY_POSITION_KEY)
|
||||||
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
&& intent.hasExtra(SAVE_DATABASE_KEY)
|
||||||
) {
|
) {
|
||||||
val database = Database.getInstance()
|
|
||||||
val entryId: NodeId<UUID> = intent.getParcelableExtra(ENTRY_ID_KEY) ?: return null
|
val entryId: NodeId<UUID> = intent.getParcelableExtra(ENTRY_ID_KEY) ?: return null
|
||||||
|
|
||||||
database.getEntryById(entryId)?.let { mainEntry ->
|
mDatabase.getEntryById(entryId)?.let { mainEntry ->
|
||||||
DeleteEntryHistoryDatabaseRunnable(this,
|
DeleteEntryHistoryDatabaseRunnable(this,
|
||||||
database,
|
mDatabase,
|
||||||
mainEntry,
|
mainEntry,
|
||||||
intent.getIntExtra(ENTRY_HISTORY_POSITION_KEY, -1),
|
intent.getIntExtra(ENTRY_HISTORY_POSITION_KEY, -1),
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false))
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false))
|
||||||
@@ -577,7 +685,7 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
return null
|
return null
|
||||||
|
|
||||||
return UpdateCompressionBinariesDatabaseRunnable(this,
|
return UpdateCompressionBinariesDatabaseRunnable(this,
|
||||||
Database.getInstance(),
|
mDatabase,
|
||||||
oldElement,
|
oldElement,
|
||||||
newElement,
|
newElement,
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
|
||||||
@@ -594,7 +702,7 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
private fun buildDatabaseUpdateElementActionTask(intent: Intent): ActionRunnable? {
|
private fun buildDatabaseUpdateElementActionTask(intent: Intent): ActionRunnable? {
|
||||||
return if (intent.hasExtra(SAVE_DATABASE_KEY)) {
|
return if (intent.hasExtra(SAVE_DATABASE_KEY)) {
|
||||||
return SaveDatabaseRunnable(this,
|
return SaveDatabaseRunnable(this,
|
||||||
Database.getInstance(),
|
mDatabase,
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
|
||||||
).apply {
|
).apply {
|
||||||
mAfterSaveDatabase = { result ->
|
mAfterSaveDatabase = { result ->
|
||||||
@@ -612,7 +720,7 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
private fun buildDatabaseSave(intent: Intent): ActionRunnable? {
|
private fun buildDatabaseSave(intent: Intent): ActionRunnable? {
|
||||||
return if (intent.hasExtra(SAVE_DATABASE_KEY)) {
|
return if (intent.hasExtra(SAVE_DATABASE_KEY)) {
|
||||||
SaveDatabaseRunnable(this,
|
SaveDatabaseRunnable(this,
|
||||||
Database.getInstance(),
|
mDatabase,
|
||||||
intent.getBooleanExtra(SAVE_DATABASE_KEY, false))
|
intent.getBooleanExtra(SAVE_DATABASE_KEY, false))
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
@@ -623,10 +731,6 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
|
|
||||||
private val TAG = DatabaseTaskNotificationService::class.java.name
|
private val TAG = DatabaseTaskNotificationService::class.java.name
|
||||||
|
|
||||||
const val DATABASE_TASK_TITLE_KEY = "DATABASE_TASK_TITLE_KEY"
|
|
||||||
const val DATABASE_TASK_MESSAGE_KEY = "DATABASE_TASK_MESSAGE_KEY"
|
|
||||||
const val DATABASE_TASK_WARNING_KEY = "DATABASE_TASK_WARNING_KEY"
|
|
||||||
|
|
||||||
const val ACTION_DATABASE_CREATE_TASK = "ACTION_DATABASE_CREATE_TASK"
|
const val ACTION_DATABASE_CREATE_TASK = "ACTION_DATABASE_CREATE_TASK"
|
||||||
const val ACTION_DATABASE_LOAD_TASK = "ACTION_DATABASE_LOAD_TASK"
|
const val ACTION_DATABASE_LOAD_TASK = "ACTION_DATABASE_LOAD_TASK"
|
||||||
const val ACTION_DATABASE_ASSIGN_PASSWORD_TASK = "ACTION_DATABASE_ASSIGN_PASSWORD_TASK"
|
const val ACTION_DATABASE_ASSIGN_PASSWORD_TASK = "ACTION_DATABASE_ASSIGN_PASSWORD_TASK"
|
||||||
@@ -652,6 +756,11 @@ class DatabaseTaskNotificationService : NotificationService(), ProgressTaskUpdat
|
|||||||
const val ACTION_DATABASE_UPDATE_PARALLELISM_TASK = "ACTION_DATABASE_UPDATE_PARALLELISM_TASK"
|
const val ACTION_DATABASE_UPDATE_PARALLELISM_TASK = "ACTION_DATABASE_UPDATE_PARALLELISM_TASK"
|
||||||
const val ACTION_DATABASE_UPDATE_ITERATIONS_TASK = "ACTION_DATABASE_UPDATE_ITERATIONS_TASK"
|
const val ACTION_DATABASE_UPDATE_ITERATIONS_TASK = "ACTION_DATABASE_UPDATE_ITERATIONS_TASK"
|
||||||
const val ACTION_DATABASE_SAVE = "ACTION_DATABASE_SAVE"
|
const val ACTION_DATABASE_SAVE = "ACTION_DATABASE_SAVE"
|
||||||
|
const val ACTION_DATABASE_CLOSE = "ACTION_DATABASE_CLOSE"
|
||||||
|
|
||||||
|
const val DATABASE_TASK_TITLE_KEY = "DATABASE_TASK_TITLE_KEY"
|
||||||
|
const val DATABASE_TASK_MESSAGE_KEY = "DATABASE_TASK_MESSAGE_KEY"
|
||||||
|
const val DATABASE_TASK_WARNING_KEY = "DATABASE_TASK_WARNING_KEY"
|
||||||
|
|
||||||
const val DATABASE_URI_KEY = "DATABASE_URI_KEY"
|
const val DATABASE_URI_KEY = "DATABASE_URI_KEY"
|
||||||
const val MASTER_PASSWORD_CHECKED_KEY = "MASTER_PASSWORD_CHECKED_KEY"
|
const val MASTER_PASSWORD_CHECKED_KEY = "MASTER_PASSWORD_CHECKED_KEY"
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
package com.kunzisoft.keepass.notifications
|
package com.kunzisoft.keepass.notifications
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
||||||
import com.kunzisoft.keepass.utils.LockReceiver
|
import com.kunzisoft.keepass.utils.LockReceiver
|
||||||
import com.kunzisoft.keepass.utils.registerLockReceiver
|
import com.kunzisoft.keepass.utils.registerLockReceiver
|
||||||
import com.kunzisoft.keepass.utils.unregisterLockReceiver
|
import com.kunzisoft.keepass.utils.unregisterLockReceiver
|
||||||
|
|||||||
Reference in New Issue
Block a user