From d9a35b0f2ab5eea1077c3b93a6905552cac20ece Mon Sep 17 00:00:00 2001 From: JunZhang Date: Mon, 11 May 2020 09:23:29 +0800 Subject: [PATCH] comfirm passphrase input (#6) --- .../cold/ui/fragment/PassphraseFragment.java | 51 ++++++----- app/src/main/res/layout/passphrase.xml | 88 ++++++++++++------- app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 4 files changed, 87 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/com/cobo/cold/ui/fragment/PassphraseFragment.java b/app/src/main/java/com/cobo/cold/ui/fragment/PassphraseFragment.java index ba71118..cf2987f 100644 --- a/app/src/main/java/com/cobo/cold/ui/fragment/PassphraseFragment.java +++ b/app/src/main/java/com/cobo/cold/ui/fragment/PassphraseFragment.java @@ -18,16 +18,17 @@ package com.cobo.cold.ui.fragment; import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.text.InputFilter; import android.text.TextUtils; -import android.text.method.PasswordTransformationMethod; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import androidx.databinding.DataBindingUtil; +import androidx.databinding.Observable; import androidx.databinding.ObservableField; import androidx.navigation.Navigation; @@ -46,7 +47,6 @@ import com.cobo.cold.util.Keyboard; import com.cobo.cold.viewmodel.SetupVaultViewModel; import java.util.List; -import java.util.Objects; import static com.cobo.cold.Utilities.IS_SETUP_VAULT; import static com.cobo.cold.Utilities.IS_SET_PASSPHRASE; @@ -58,7 +58,8 @@ public class PassphraseFragment extends SetupVaultBaseFragment passphrase = new ObservableField<>(""); + private final ObservableField passphrase1 = new ObservableField<>(""); + private final ObservableField passphrase2 = new ObservableField<>(""); private ModalDialog dialog; @Override @@ -73,17 +74,31 @@ public class PassphraseFragment extends SetupVaultBaseFragment updateShowHide()); + mBinding.setPassphrase1(passphrase1); + mBinding.setPassphrase2(passphrase2); + setFilterSpace(mBinding.input1); + setFilterSpace(mBinding.input2); mBinding.confirm.setOnClickListener(v -> confirmInput()); - mBinding.input.setShowSoftInputOnFocus(false); - mBinding.input.setOnClickListener(v -> Keyboard.show(mActivity, mBinding.input)); + Observable.OnPropertyChangedCallback callback = new Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + String input1 = passphrase1.get(); + String input2 = passphrase2.get(); + if (input2.length() >= input1.length() && !input1.equals(input2)) { + mBinding.inputHint.setText(R.string.password_verify_wrong); + mBinding.inputHint.setTextColor(Color.RED); + } else { + mBinding.inputHint.setText(R.string.passphrase_hint3); + mBinding.inputHint.setTextColor(Color.WHITE); + } + } + }; + passphrase1.addOnPropertyChangedCallback(callback); + passphrase2.addOnPropertyChangedCallback(callback); } private void confirmInput() { @@ -96,7 +111,7 @@ public class PassphraseFragment extends SetupVaultBaseFragment { - Keyboard.hide(mActivity, mBinding.input); + Keyboard.hide(mActivity, mBinding.input1); dialog.dismiss(); updatePassphrase(); }); @@ -105,18 +120,10 @@ public class PassphraseFragment extends SetupVaultBaseFragment { if (SPACE.equals(source.toString())) { @@ -143,7 +150,7 @@ public class PassphraseFragment extends SetupVaultBaseFragment { Bundle data = new Bundle(); @@ -153,7 +160,7 @@ public class PassphraseFragment extends SetupVaultBaseFragment + @@ -58,7 +61,7 @@ android:id="@+id/hint" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="20dp" + android:layout_marginTop="10dp" android:text="@string/passphrase_hint" android:textColor="@android:color/white" android:textStyle="bold" @@ -69,43 +72,33 @@ android:id="@+id/hint1" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="20dp" + android:layout_marginTop="10dp" android:text="@string/passphrase_hint1" android:textColor="@android:color/white" android:layout_marginHorizontal="16dp" android:textSize="12sp" /> - - - + android:layout_height="wrap_content" + android:layout_marginHorizontal="16dp" + android:layout_marginTop="10dp" + android:orientation="vertical"> - - + android:layout_height="1dp" /> + + + + + + + + + android:text="@string/confirm" + android:enabled="@{passphrase1.equals(passphrase2)}"/> \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 9c98c29..1438e32 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -118,6 +118,7 @@ 请输入密码 密语长度不得超过128个字符;可用大小写字母、数字、符号,禁用空格; 密语 (Passphrase): 区分大小写 + 请再次输入密语 注意:\n1.隐藏金库创建后,其对应的密语(Passphrase)不可修改;请牢记密语(Passphrase),忘记密语(Passphrase)将意味着隐藏金库的资产丢失;\n2. 密语为空,直接点击确定按钮将进入到默认金库 请输入 密语 (Passphrase) 密语(Passphrase)金库 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5f70059..e5dcd68 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -139,6 +139,7 @@ Please enter password. Passphrases cannot exceed 128 characters. Can consist of upper and lower case letters, digits, and symbols, but not spaces. Case Sensitive. Enter a Passphrase (case sensitive) + Enter Passphrase Again Important Information:\n1. When a Hidden Vault is created, its Passphrase cannot be changed. If the Passphrase is lost or forgotten, the Hidden Vault and all its assets will be irretrievable. Record and store the Passphrase securely before creating a Hidden Vault \n2. Keep the Passphrase field blank to enter the default Vault Please Input a Passphrase Passphrase Vault