mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Better recycle bin implementation
This commit is contained in:
@@ -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?) {
|
||||
|
||||
@@ -219,28 +219,6 @@ class DatabaseKDB : DatabaseVersioned<Int, UUID, GroupKDB, EntryKDB>() {
|
||||
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 ->
|
||||
|
||||
@@ -305,7 +305,7 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
|
||||
|
||||
// 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<UUID, UUID, GroupKDBX, EntryKDBX> {
|
||||
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<DeletedObject> {
|
||||
return deletedObjects
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user