From b72d858480531f05a0094c25a0c408a88388029e Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Fri, 28 Aug 2020 11:08:30 +0200 Subject: [PATCH] First pass to fix attachment deleted in history --- .../com/kunzisoft/keepass/database/element/Entry.kt | 4 ++-- .../keepass/database/element/database/DatabaseKDBX.kt | 2 +- .../keepass/database/element/entry/EntryKDBX.kt | 10 ++++++++-- .../com/kunzisoft/keepass/view/EntryContentsView.kt | 2 +- .../kunzisoft/keepass/view/EntryEditContentsView.kt | 2 +- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/Entry.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/Entry.kt index af6899921..a7f6b3a29 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/Entry.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/Entry.kt @@ -325,8 +325,8 @@ class Entry : Node, EntryVersionedInterface { entryKDBX?.stopToManageFieldReferences() } - fun getAttachments(binaryPool: BinaryPool): ArrayList { - val attachments = ArrayList() + fun getAttachments(binaryPool: BinaryPool): Set { + val attachments = HashSet() entryKDB?.getAttachments()?.let { attachments.addAll(it) } 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 094911eea..8cda3f595 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 @@ -588,7 +588,7 @@ class DatabaseKDBX : DatabaseVersioned { // Remove binaries from the list rootGroup?.doForEachChild(object : NodeHandler() { override fun operate(node: EntryKDBX): Boolean { - node.getAttachments(binaryPool).forEach { + node.getAttachments(binaryPool, true).forEach { binariesToRemove.remove(it.binaryAttachment) } return binariesToRemove.isNotEmpty() diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/entry/EntryKDBX.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/entry/EntryKDBX.kt index 9931ef248..6d99a3ce9 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/entry/EntryKDBX.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/entry/EntryKDBX.kt @@ -38,6 +38,7 @@ import com.kunzisoft.keepass.utils.ParcelableUtil import com.kunzisoft.keepass.utils.UnsignedLong import java.util.* import kotlin.collections.ArrayList +import kotlin.collections.HashSet import kotlin.collections.LinkedHashMap class EntryKDBX : EntryVersioned, NodeKDBXInterface { @@ -283,13 +284,18 @@ class EntryKDBX : EntryVersioned, NodeKDBXInte fields[label] = value } - fun getAttachments(binaryPool: BinaryPool): ArrayList { - val entryAttachmentList = ArrayList() + fun getAttachments(binaryPool: BinaryPool, inHistory: Boolean = false): Set { + val entryAttachmentList = HashSet() for ((label, poolId) in binaries) { binaryPool[poolId]?.let { binary -> entryAttachmentList.add(Attachment(label, binary)) } } + if (inHistory) { + history.forEach { + entryAttachmentList.addAll(it.getAttachments(binaryPool, false)) + } + } return entryAttachmentList } diff --git a/app/src/main/java/com/kunzisoft/keepass/view/EntryContentsView.kt b/app/src/main/java/com/kunzisoft/keepass/view/EntryContentsView.kt index b7c8aceb3..e7e3dc5ec 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/EntryContentsView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/EntryContentsView.kt @@ -317,7 +317,7 @@ class EntryContentsView @JvmOverloads constructor(context: Context, attachmentsContainerView.visibility = if (show) View.VISIBLE else View.GONE } - fun assignAttachments(attachments: ArrayList, + fun assignAttachments(attachments: Set, streamDirection: StreamDirection, onAttachmentClicked: (attachment: Attachment)->Unit) { showAttachments(attachments.isNotEmpty()) diff --git a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt index 54f894f11..44f3e99c3 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt @@ -284,7 +284,7 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, return attachmentsAdapter.itemsList.map { it.attachment } } - fun assignAttachments(attachments: ArrayList, + fun assignAttachments(attachments: Set, streamDirection: StreamDirection, onDeleteItem: (attachment: Attachment)->Unit) { attachmentsContainerView.visibility = if (attachments.isEmpty()) View.GONE else View.VISIBLE