diff options
author | Harsh Shandilya <msfjarvis@gmail.com> | 2020-05-01 16:32:58 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-01 16:32:58 +0530 |
commit | ced8bcca01dc2545edc3ef17e0cd44922dd97e61 (patch) | |
tree | 9836972e9f3333216308018906d6916fa57f02c6 /app | |
parent | 9696af4024e2b74c5a893883631fa70b97aaf4ee (diff) |
Confirm password move if it will replace an existing one (#757)
* Confirm password move if it will replace an existing one
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* CHANGELOG: update
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'app')
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt | 61 |
1 files changed, 34 insertions, 27 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt index fe18c6b7..c9b47582 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt @@ -729,37 +729,21 @@ class PasswordStore : AppCompatActivity() { val sourceLongName = getLongName(requireNotNull(source.parent), repositoryPath, basename) val destinationLongName = getLongName(target.absolutePath, repositoryPath, basename) if (destinationFile.exists()) { - tag(TAG).e { "Trying to move a file that already exists." } - // TODO: Add option to cancel overwrite. Will be easier once this is an async task. + e { "Trying to move a file that already exists." } MaterialAlertDialogBuilder(this) .setTitle(resources.getString(R.string.password_exists_title)) - .setMessage(resources - .getString( - R.string.password_exists_message, - destinationLongName, - sourceLongName)) - .setPositiveButton("Okay", null) + .setMessage(resources.getString( + R.string.password_exists_message, + destinationLongName, + sourceLongName) + ) + .setPositiveButton(R.string.dialog_ok) { _, _ -> + movePasswords(source, destinationFile, sourceLongName, destinationLongName) + } + .setNegativeButton(R.string.dialog_cancel, null) .show() - } - val sourceDestinationMap = if (source.isDirectory) { - // Recursively list all files (not directories) below `source`, then - // obtain the corresponding target file by resolving the relative path - // starting at the destination folder. - val sourceFiles = FileUtils.listFiles(source, null, true) - sourceFiles.associateWith { destinationFile.resolve(it.relativeTo(source)) } - } else { - mapOf(source to destinationFile) - } - if (!source.renameTo(destinationFile)) { - // TODO this should show a warning to the user - tag(TAG).e { "Something went wrong while moving." } } else { - AutofillMatcher.updateMatches(this, sourceDestinationMap) - commitChange(this.resources - .getString( - R.string.git_commit_move_text, - sourceLongName, - destinationLongName)) + movePasswords(source, destinationFile, sourceLongName, destinationLongName) } } resetPasswordList() @@ -772,6 +756,29 @@ class PasswordStore : AppCompatActivity() { super.onActivityResult(requestCode, resultCode, data) } + private fun movePasswords(source: File, destinationFile: File, sourceLongName: String, destinationLongName: String) { + val sourceDestinationMap = if (source.isDirectory) { + // Recursively list all files (not directories) below `source`, then + // obtain the corresponding target file by resolving the relative path + // starting at the destination folder. + val sourceFiles = FileUtils.listFiles(source, null, true) + sourceFiles.associateWith { destinationFile.resolve(it.relativeTo(source)) } + } else { + mapOf(source to destinationFile) + } + if (!source.renameTo(destinationFile)) { + // TODO this should show a warning to the user + e { "Something went wrong while moving." } + } else { + AutofillMatcher.updateMatches(this, sourceDestinationMap) + commitChange(this.resources + .getString( + R.string.git_commit_move_text, + sourceLongName, + destinationLongName)) + } + } + private fun initRepository(operation: Int) { closeRepository() MaterialAlertDialogBuilder(this) |