From 699578bb59655c91061b13c29fa723bd52536fb9 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 4 Jan 2022 13:31:18 +0100 Subject: [PATCH] Better recycle bin implementation --- .../keepass/database/element/Database.kt | 52 ++++++++----------- .../database/element/database/DatabaseKDB.kt | 22 -------- .../database/element/database/DatabaseKDBX.kt | 26 +--------- 3 files changed, 23 insertions(+), 77 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt index 7b3a16635..e88c66887 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt @@ -23,9 +23,7 @@ import android.content.ContentResolver import android.content.Context import android.content.res.Resources import android.net.Uri -import android.os.Build import android.util.Log -import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction import com.kunzisoft.keepass.database.action.node.NodeHandler import com.kunzisoft.keepass.database.crypto.EncryptionAlgorithm import com.kunzisoft.keepass.database.crypto.kdf.KdfEngine @@ -446,10 +444,10 @@ class Database { val recycleBin: Group? get() { mDatabaseKDB?.backupGroup?.let { - return Group(it) + return getGroupById(it.nodeId) ?: Group(it) } mDatabaseKDBX?.recycleBin?.let { - return Group(it) + return getGroupById(it.nodeId) ?: Group(it) } return null } @@ -1100,47 +1098,41 @@ class Database { } fun recycle(entry: Entry, resources: Resources) { - entry.entryKDB?.let { - mDatabaseKDB?.recycle(it) + ensureRecycleBinExists(resources) + entry.parent?.let { parent -> + removeEntryFrom(entry, parent) } - entry.entryKDBX?.let { - mDatabaseKDBX?.recycle(it, resources) + recycleBin?.let { + addEntryTo(entry, it) } + entry.afterAssignNewParent() } fun recycle(group: Group, resources: Resources) { - group.groupKDB?.let { - mDatabaseKDB?.recycle(it) + ensureRecycleBinExists(resources) + group.parent?.let { parent -> + removeGroupFrom(group, parent) } - group.groupKDBX?.let { - mDatabaseKDBX?.recycle(it, resources) + recycleBin?.let { + addGroupTo(group, it) } + group.afterAssignNewParent() } fun undoRecycle(entry: Entry, parent: Group) { - entry.entryKDB?.let { entryKDB -> - parent.groupKDB?.let { parentKDB -> - mDatabaseKDB?.undoRecycle(entryKDB, parentKDB) - } - } - entry.entryKDBX?.let { entryKDBX -> - parent.groupKDBX?.let { parentKDBX -> - mDatabaseKDBX?.undoRecycle(entryKDBX, parentKDBX) - } + recycleBin?.let { it -> + removeEntryFrom(entry, it) } + addEntryTo(entry, parent) + entry.afterAssignNewParent() } fun undoRecycle(group: Group, parent: Group) { - group.groupKDB?.let { groupKDB -> - parent.groupKDB?.let { parentKDB -> - mDatabaseKDB?.undoRecycle(groupKDB, parentKDB) - } - } - group.groupKDBX?.let { entryKDBX -> - parent.groupKDBX?.let { parentKDBX -> - mDatabaseKDBX?.undoRecycle(entryKDBX, parentKDBX) - } + recycleBin?.let { + removeGroupFrom(group, it) } + addGroupTo(group, parent) + group.afterAssignNewParent() } fun startManageEntry(entry: Entry?) { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt index a3d70f0d3..9ceb5d279 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt @@ -219,28 +219,6 @@ class DatabaseKDB : DatabaseVersioned() { return true } - fun recycle(group: GroupKDB) { - removeGroupFrom(group, group.parent) - addGroupTo(group, backupGroup) - group.afterAssignNewParent() - } - - fun recycle(entry: EntryKDB) { - removeEntryFrom(entry, entry.parent) - addEntryTo(entry, backupGroup) - entry.afterAssignNewParent() - } - - fun undoRecycle(group: GroupKDB, origParent: GroupKDB) { - removeGroupFrom(group, backupGroup) - addGroupTo(group, origParent) - } - - fun undoRecycle(entry: EntryKDB, origParent: GroupKDB) { - removeEntryFrom(entry, backupGroup) - addEntryTo(entry, origParent) - } - fun buildNewAttachment(): BinaryData { // Generate an unique new file return attachmentPool.put { uniqueBinaryId -> diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt index e42570881..14d5c4570 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt @@ -305,7 +305,7 @@ class DatabaseKDBX : DatabaseVersioned { // Retrieve recycle bin in index val recycleBin: GroupKDBX? - get() = if (recycleBinUUID == UUID_ZERO) null else getGroupByUUID(recycleBinUUID) + get() = getGroupByUUID(recycleBinUUID) val lastSelectedGroup: GroupKDBX? get() = getGroupByUUID(lastSelectedGroupUUID) @@ -753,30 +753,6 @@ class DatabaseKDBX : DatabaseVersioned { return false } - fun recycle(group: GroupKDBX, resources: Resources) { - ensureRecycleBinExists(resources) - removeGroupFrom(group, group.parent) - addGroupTo(group, recycleBin) - group.afterAssignNewParent() - } - - fun recycle(entry: EntryKDBX, resources: Resources) { - ensureRecycleBinExists(resources) - removeEntryFrom(entry, entry.parent) - addEntryTo(entry, recycleBin) - entry.afterAssignNewParent() - } - - fun undoRecycle(group: GroupKDBX, origParent: GroupKDBX) { - removeGroupFrom(group, recycleBin) - addGroupTo(group, origParent) - } - - fun undoRecycle(entry: EntryKDBX, origParent: GroupKDBX) { - removeEntryFrom(entry, recycleBin) - addEntryTo(entry, origParent) - } - fun getDeletedObjects(): List { return deletedObjects }