summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorHarsh Shandilya <msfjarvis@gmail.com>2020-05-01 16:32:58 +0530
committerGitHub <noreply@github.com>2020-05-01 16:32:58 +0530
commitced8bcca01dc2545edc3ef17e0cd44922dd97e61 (patch)
tree9836972e9f3333216308018906d6916fa57f02c6 /app/src
parent9696af4024e2b74c5a893883631fa70b97aaf4ee (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/src')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt61
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)