diff --git a/presentation/src/main/java/org/cryptomator/presentation/ui/dialog/ChangePasswordDialog.kt b/presentation/src/main/java/org/cryptomator/presentation/ui/dialog/ChangePasswordDialog.kt index 73a0e90e..a9942b62 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/ui/dialog/ChangePasswordDialog.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/ui/dialog/ChangePasswordDialog.kt @@ -51,6 +51,14 @@ class ChangePasswordDialog : BaseProgressErrorDialog et_new_retype_password.nextFocusForwardId = button.id } + + registerOnEditorDoneActionAndPerformButtonClick(et_new_retype_password) { changePasswordButton } + + PasswordStrengthUtil() // + .startUpdatingPasswordStrengthMeter(et_new_password, // + progressBarPwStrengthIndicator, // + textViewPwStrengthIndicator, // + changePasswordButton) } } @@ -83,11 +91,6 @@ class ChangePasswordDialog : BaseProgressErrorDialog): PasswordStrength { - return if (password.isEmpty()) { - EMPTY - } else { - forScore(zxcvbn.measure(password, sanitizedInputs).score).orElse(EMPTY) + return when { + password.isEmpty() -> { + EMPTY + } + password.length < MIN_PASSWORD_LENGTH -> { + EXTREMELY_WEAK + } + else -> { + forScore(zxcvbn.measure(password, sanitizedInputs).score).orElse(EMPTY) + } } } diff --git a/presentation/src/main/java/org/cryptomator/presentation/util/PasswordStrengthUtil.java b/presentation/src/main/java/org/cryptomator/presentation/util/PasswordStrengthUtil.java index 7b6a9589..7ecaa252 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/util/PasswordStrengthUtil.java +++ b/presentation/src/main/java/org/cryptomator/presentation/util/PasswordStrengthUtil.java @@ -1,6 +1,7 @@ package org.cryptomator.presentation.util; import android.graphics.PorterDuff; +import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; @@ -40,9 +41,10 @@ public class PasswordStrengthUtil { public PasswordStrengthUtil() { } - public void startUpdatingPasswortStrengthMeter(EditText passwordInput, // + public void startUpdatingPasswordStrengthMeter(EditText passwordInput, // final ProgressBar strengthMeter, // - final TextView strengthLabel) { + final TextView strengthLabel, // + final Button button) { RxTextView.textChanges(passwordInput) // .observeOn(Schedulers.computation()) // .map(password -> PasswordStrength.Companion.forPassword(password.toString(), SANITIZED_INPUTS)) // @@ -51,6 +53,7 @@ public class PasswordStrengthUtil { strengthMeter.getProgressDrawable().setColorFilter(ResourceHelper.Companion.getColor(strength.getColor()), PorterDuff.Mode.SRC_IN); strengthLabel.setText(strength.getDescription()); strengthMeter.setProgress(strength.getScore() + 1); + button.setEnabled(strength.getScore() > PasswordStrength.EXTREMELY_WEAK.getScore()); }); } } diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index e8129659..85c2392a 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -187,7 +187,7 @@ @string/screen_webdav_settings_password_label Retype password - Very weak + Too weak to create a vault Weak Fair Strong