Fix upload attachment multiple times

This commit is contained in:
J-Jamet
2020-09-17 18:09:37 +02:00
parent 3d327b245a
commit b0936563a2
2 changed files with 14 additions and 7 deletions

View File

@@ -461,12 +461,13 @@ class Database {
fun removeAttachmentIfNotUsed(attachment: Attachment) {
// No need in KDB database because unique attachment by entry
mDatabaseKDBX?.removeAttachmentIfNotUsed(attachment)
// Don't clear to fix upload multiple times
mDatabaseKDBX?.removeUnlinkedAttachment(attachment.binaryAttachment, false)
}
fun removeUnlinkedAttachments() {
// No check in database KDB because unique attachment by entry
mDatabaseKDBX?.removeUnlinkedAttachments()
mDatabaseKDBX?.removeUnlinkedAttachments(true)
}
@Throws(DatabaseOutputException::class)

View File

@@ -569,12 +569,17 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
return binaryAttachment
}
fun removeAttachmentIfNotUsed(attachment: Attachment) {
// Remove attachment from pool
removeUnlinkedAttachments(attachment.binaryAttachment)
fun removeUnlinkedAttachment(binary: BinaryAttachment, clear: Boolean) {
val listBinaries = ArrayList<BinaryAttachment>()
listBinaries.add(binary)
removeUnlinkedAttachments(listBinaries, clear)
}
fun removeUnlinkedAttachments(vararg binaries: BinaryAttachment) {
fun removeUnlinkedAttachments(clear: Boolean) {
removeUnlinkedAttachments(emptyList(), clear)
}
private fun removeUnlinkedAttachments(binaries: List<BinaryAttachment>, clear: Boolean) {
// Build binaries to remove with all binaries known
val binariesToRemove = ArrayList<BinaryAttachment>()
if (binaries.isEmpty()) {
@@ -597,7 +602,8 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
binariesToRemove.forEach {
try {
binaryPool.remove(it)
it.clear()
if (clear)
it.clear()
} catch (e: Exception) {
Log.w(TAG, "Unable to clean binaries", e)
}