mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Autofill during save
This commit is contained in:
@@ -3,7 +3,7 @@ KeePassDX(3.0.0)
|
|||||||
* Manually select RecycleBin group and Templates group #191
|
* Manually select RecycleBin group and Templates group #191
|
||||||
* Fix timeout in dialogs #716
|
* Fix timeout in dialogs #716
|
||||||
* Check URI permissions #626
|
* Check URI permissions #626
|
||||||
* Small changes #1035 #1043
|
* Small changes #1035 #1043 #942
|
||||||
|
|
||||||
KeePassDX(2.10.5)
|
KeePassDX(2.10.5)
|
||||||
* Increase the saving speed of database #1028
|
* Increase the saving speed of database #1028
|
||||||
|
|||||||
@@ -424,7 +424,7 @@ class EntryActivity : DatabaseLockActivity() {
|
|||||||
// Transit data in previous Activity after an update
|
// Transit data in previous Activity after an update
|
||||||
Intent().apply {
|
Intent().apply {
|
||||||
putExtra(EntryEditActivity.ADD_OR_UPDATE_ENTRY_KEY, mMainEntryId)
|
putExtra(EntryEditActivity.ADD_OR_UPDATE_ENTRY_KEY, mMainEntryId)
|
||||||
setResult(EntryEditActivity.UPDATE_ENTRY_RESULT_CODE, this)
|
setResult(EntryEditActivity.ADD_OR_UPDATE_ENTRY_RESULT_CODE, this)
|
||||||
}
|
}
|
||||||
super.finish()
|
super.finish()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -267,6 +267,24 @@ class EntryEditActivity : DatabaseLockActivity(),
|
|||||||
} ?: run {
|
} ?: run {
|
||||||
updateEntry(entrySave.oldEntry, entrySave.newEntry)
|
updateEntry(entrySave.oldEntry, entrySave.newEntry)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't wait for saving if it's to provide autofill
|
||||||
|
mDatabase?.let { database ->
|
||||||
|
EntrySelectionHelper.doSpecialAction(intent,
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
entryValidatedForKeyboardSelection(database, entrySave.newEntry)
|
||||||
|
},
|
||||||
|
{ _, _ ->
|
||||||
|
entryValidatedForAutofillSelection(database, entrySave.newEntry)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
entryValidatedForAutofillRegistration(entrySave.newEntry)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -376,22 +394,22 @@ class EntryEditActivity : DatabaseLockActivity(),
|
|||||||
EntrySelectionHelper.doSpecialAction(intent,
|
EntrySelectionHelper.doSpecialAction(intent,
|
||||||
{
|
{
|
||||||
// Finish naturally
|
// Finish naturally
|
||||||
finishForEntryResult(actionTask, entry)
|
finishForEntryResult(entry)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Nothing when search retrieved
|
// Nothing when search retrieved
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
entryValidatedForSave(actionTask, entry)
|
entryValidatedForSave(entry)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
entryValidatedForKeyboardSelection(database, actionTask, entry)
|
entryValidatedForKeyboardSelection(database, entry)
|
||||||
},
|
},
|
||||||
{ _, _ ->
|
{ _, _ ->
|
||||||
entryValidatedForAutofillSelection(database, entry)
|
entryValidatedForAutofillSelection(database, entry)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
entryValidatedForAutofillRegistration(actionTask, entry)
|
entryValidatedForAutofillRegistration(entry)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -405,19 +423,19 @@ class EntryEditActivity : DatabaseLockActivity(),
|
|||||||
coordinatorLayout?.showActionErrorIfNeeded(result)
|
coordinatorLayout?.showActionErrorIfNeeded(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun entryValidatedForSave(actionTask: String, entry: Entry) {
|
private fun entryValidatedForSave(entry: Entry) {
|
||||||
onValidateSpecialMode()
|
onValidateSpecialMode()
|
||||||
finishForEntryResult(actionTask, entry)
|
finishForEntryResult(entry)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun entryValidatedForKeyboardSelection(database: Database, actionTask: String, entry: Entry) {
|
private fun entryValidatedForKeyboardSelection(database: Database, entry: Entry) {
|
||||||
// Populate Magikeyboard with entry
|
// Populate Magikeyboard with entry
|
||||||
populateKeyboardAndMoveAppToBackground(this,
|
populateKeyboardAndMoveAppToBackground(this,
|
||||||
entry.getEntryInfo(database),
|
entry.getEntryInfo(database),
|
||||||
intent)
|
intent)
|
||||||
onValidateSpecialMode()
|
onValidateSpecialMode()
|
||||||
// Don't keep activity history for entry edition
|
// Don't keep activity history for entry edition
|
||||||
finishForEntryResult(actionTask, entry)
|
finishForEntryResult(entry)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun entryValidatedForAutofillSelection(database: Database, entry: Entry) {
|
private fun entryValidatedForAutofillSelection(database: Database, entry: Entry) {
|
||||||
@@ -430,9 +448,9 @@ class EntryEditActivity : DatabaseLockActivity(),
|
|||||||
onValidateSpecialMode()
|
onValidateSpecialMode()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun entryValidatedForAutofillRegistration(actionTask: String, entry: Entry) {
|
private fun entryValidatedForAutofillRegistration(entry: Entry) {
|
||||||
onValidateSpecialMode()
|
onValidateSpecialMode()
|
||||||
finishForEntryResult(actionTask, entry)
|
finishForEntryResult(entry)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
@@ -712,21 +730,14 @@ class EntryEditActivity : DatabaseLockActivity(),
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun finishForEntryResult(actionTask: String, entry: Entry) {
|
private fun finishForEntryResult(entry: Entry) {
|
||||||
// Assign entry callback as a result
|
// Assign entry callback as a result
|
||||||
try {
|
try {
|
||||||
val bundle = Bundle()
|
val bundle = Bundle()
|
||||||
val intentEntry = Intent()
|
val intentEntry = Intent()
|
||||||
bundle.putParcelable(ADD_OR_UPDATE_ENTRY_KEY, entry.nodeId)
|
bundle.putParcelable(ADD_OR_UPDATE_ENTRY_KEY, entry.nodeId)
|
||||||
intentEntry.putExtras(bundle)
|
intentEntry.putExtras(bundle)
|
||||||
when (actionTask) {
|
setResult(ADD_OR_UPDATE_ENTRY_RESULT_CODE, intentEntry)
|
||||||
ACTION_DATABASE_CREATE_ENTRY_TASK -> {
|
|
||||||
setResult(ADD_ENTRY_RESULT_CODE, intentEntry)
|
|
||||||
}
|
|
||||||
ACTION_DATABASE_UPDATE_ENTRY_TASK -> {
|
|
||||||
setResult(UPDATE_ENTRY_RESULT_CODE, intentEntry)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
super.finish()
|
super.finish()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
// Exception when parcelable can't be done
|
// Exception when parcelable can't be done
|
||||||
@@ -743,8 +754,7 @@ class EntryEditActivity : DatabaseLockActivity(),
|
|||||||
const val KEY_PARENT = "parent"
|
const val KEY_PARENT = "parent"
|
||||||
|
|
||||||
// Keys for callback
|
// Keys for callback
|
||||||
const val ADD_ENTRY_RESULT_CODE = 31
|
const val ADD_OR_UPDATE_ENTRY_RESULT_CODE = 31
|
||||||
const val UPDATE_ENTRY_RESULT_CODE = 32
|
|
||||||
const val ADD_OR_UPDATE_ENTRY_REQUEST_CODE = 7129
|
const val ADD_OR_UPDATE_ENTRY_REQUEST_CODE = 7129
|
||||||
const val ADD_OR_UPDATE_ENTRY_KEY = "ADD_OR_UPDATE_ENTRY_KEY"
|
const val ADD_OR_UPDATE_ENTRY_KEY = "ADD_OR_UPDATE_ENTRY_KEY"
|
||||||
|
|
||||||
|
|||||||
@@ -623,9 +623,8 @@ class GroupActivity : DatabaseLockActivity(),
|
|||||||
&& PreferencesUtil.isKeyboardSaveSearchInfoEnable(this@GroupActivity)
|
&& PreferencesUtil.isKeyboardSaveSearchInfoEnable(this@GroupActivity)
|
||||||
) {
|
) {
|
||||||
updateEntryWithSearchInfo(database, entryVersioned, searchInfo)
|
updateEntryWithSearchInfo(database, entryVersioned, searchInfo)
|
||||||
} else {
|
|
||||||
entrySelectedForKeyboardSelection(database, entryVersioned)
|
|
||||||
}
|
}
|
||||||
|
entrySelectedForKeyboardSelection(database, entryVersioned)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Normally not append
|
// Normally not append
|
||||||
@@ -639,9 +638,8 @@ class GroupActivity : DatabaseLockActivity(),
|
|||||||
&& PreferencesUtil.isAutofillSaveSearchInfoEnable(this@GroupActivity)
|
&& PreferencesUtil.isAutofillSaveSearchInfoEnable(this@GroupActivity)
|
||||||
) {
|
) {
|
||||||
updateEntryWithSearchInfo(database, entryVersioned, searchInfo)
|
updateEntryWithSearchInfo(database, entryVersioned, searchInfo)
|
||||||
} else {
|
|
||||||
entrySelectedForAutofillSelection(database, entryVersioned)
|
|
||||||
}
|
}
|
||||||
|
entrySelectedForAutofillSelection(database, entryVersioned)
|
||||||
},
|
},
|
||||||
{ registerInfo ->
|
{ registerInfo ->
|
||||||
if (!database.isReadOnly)
|
if (!database.isReadOnly)
|
||||||
|
|||||||
@@ -406,8 +406,7 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen
|
|||||||
|
|
||||||
when (requestCode) {
|
when (requestCode) {
|
||||||
EntryEditActivity.ADD_OR_UPDATE_ENTRY_REQUEST_CODE -> {
|
EntryEditActivity.ADD_OR_UPDATE_ENTRY_REQUEST_CODE -> {
|
||||||
if (resultCode == EntryEditActivity.ADD_ENTRY_RESULT_CODE
|
if (resultCode == EntryEditActivity.ADD_OR_UPDATE_ENTRY_RESULT_CODE) {
|
||||||
|| resultCode == EntryEditActivity.UPDATE_ENTRY_RESULT_CODE) {
|
|
||||||
data?.getParcelableExtra<NodeId<UUID>>(EntryEditActivity.ADD_OR_UPDATE_ENTRY_KEY)?.let {
|
data?.getParcelableExtra<NodeId<UUID>>(EntryEditActivity.ADD_OR_UPDATE_ENTRY_KEY)?.let {
|
||||||
// Simply refresh the list
|
// Simply refresh the list
|
||||||
rebuildList()
|
rebuildList()
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
* Allow to manually select RecycleBin group and Templates group #191
|
* Allow to manually select RecycleBin group and Templates group #191
|
||||||
* Fix timeout in dialogs #716
|
* Fix timeout in dialogs #716
|
||||||
* Check URI permissions #626
|
* Check URI permissions #626
|
||||||
* Small changes #1035 #1043
|
* Small changes #1035 #1043 #942
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
* Sélection manuelle des groupes de la corbeille et des templates #191
|
* Sélection manuelle des groupes de la corbeille et des templates #191
|
||||||
* Correction du délai d'expiration dans les dialogues #716
|
* Correction du délai d'expiration dans les dialogues #716
|
||||||
* Vérification des permissions URI #626
|
* Vérification des permissions URI #626
|
||||||
* Petits changements #1035 #1043
|
* Petits changements #1035 #1043 #942
|
||||||
Reference in New Issue
Block a user