From 96d2edb6417cf7d8e126413344bd7f7c7b667266 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 2 Aug 2021 18:36:42 +0200 Subject: [PATCH] Fix template after autofill search save --- .../keepass/activities/GroupActivity.kt | 5 +++- .../keepass/database/element/Entry.kt | 10 +++++-- .../com/kunzisoft/keepass/model/EntryInfo.kt | 30 ++++++++----------- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt index c12b42ef0..16b3781d4 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt @@ -695,7 +695,10 @@ class GroupActivity : LockingActivity(), private fun updateEntryWithSearchInfo(entry: Entry, searchInfo: SearchInfo) { val newEntry = Entry(entry) - newEntry.setEntryInfo(mDatabase, newEntry.getEntryInfo(mDatabase, true).apply { + newEntry.setEntryInfo(mDatabase, newEntry.getEntryInfo(mDatabase, + raw = true, + removeTemplateConfiguration = false + ).apply { saveSearchInfo(mDatabase, searchInfo) }) // In selection mode, it's forced read-only, so update not allowed 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 45653d35d..445aabac1 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 @@ -397,10 +397,16 @@ class Entry : Node, EntryVersionedInterface { * Retrieve generated entry info. * If are not [raw] data, remove parameter fields and add auto generated elements in auto custom fields */ - fun getEntryInfo(database: Database?, raw: Boolean = false): EntryInfo { + fun getEntryInfo(database: Database?, + raw: Boolean = false, + removeTemplateConfiguration: Boolean = true): EntryInfo { val entryInfo = EntryInfo() // Remove unwanted template fields - (database?.removeTemplateConfiguration(this) ?: this).apply { + val baseInfo = if (removeTemplateConfiguration) + database?.removeTemplateConfiguration(this) ?: this + else + this + baseInfo.apply { if (raw) database?.stopManageEntry(this) else diff --git a/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt b/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt index d920b0991..1d7aa4da6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt +++ b/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt @@ -170,24 +170,18 @@ class EntryInfo : NodeInfo { if (database?.allowEntryCustomFields() == true) { val creditCard: CreditCard? = registerInfo.creditCard - - creditCard?.let { cc -> - cc.cardholder?.let { - val v = ProtectedString(false, it) - addUniqueField(Field(TemplateField.LABEL_HOLDER, v)) - } - cc.expiration?.let { - expires = true - expiryTime = DateInstant(cc.expiration.millis) - } - cc.number?.let { - val v = ProtectedString(false, it) - addUniqueField(Field(TemplateField.LABEL_NUMBER, v)) - } - cc.cvv?.let { - val v = ProtectedString(true, it) - addUniqueField(Field(TemplateField.LABEL_CVV, v)) - } + creditCard?.cardholder?.let { + addUniqueField(Field(TemplateField.LABEL_HOLDER, ProtectedString(false, it))) + } + creditCard?.expiration?.let { + expires = true + expiryTime = DateInstant(creditCard.expiration.millis) + } + creditCard?.number?.let { + addUniqueField(Field(TemplateField.LABEL_NUMBER, ProtectedString(false, it))) + } + creditCard?.cvv?.let { + addUniqueField(Field(TemplateField.LABEL_CVV, ProtectedString(true, it))) } } }