-When the PIN is being entered the user should press a button to confirm the pin
-When the PIN is being entered use question dialog to confirm the save PIN -When the PIN is correcto typed and match correctly enable the ok button
This commit is contained in:
parent
3d9d57d0fa
commit
013a3b841f
3 changed files with 92 additions and 7 deletions
|
@ -8,17 +8,25 @@ import android.text.Editable;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Button;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import butterknife.OnClick;
|
||||||
import butterknife.OnTextChanged;
|
import butterknife.OnTextChanged;
|
||||||
import cy.agorise.crystalwallet.R;
|
import cy.agorise.crystalwallet.R;
|
||||||
import cy.agorise.crystalwallet.application.CrystalSecurityMonitor;
|
import cy.agorise.crystalwallet.application.CrystalSecurityMonitor;
|
||||||
|
import cy.agorise.crystalwallet.dialogs.material.DialogMaterial;
|
||||||
|
import cy.agorise.crystalwallet.dialogs.material.NegativeResponse;
|
||||||
|
import cy.agorise.crystalwallet.dialogs.material.PositiveResponse;
|
||||||
|
import cy.agorise.crystalwallet.dialogs.material.QuestionDialog;
|
||||||
import cy.agorise.crystalwallet.models.GeneralSetting;
|
import cy.agorise.crystalwallet.models.GeneralSetting;
|
||||||
import cy.agorise.crystalwallet.util.PasswordManager;
|
import cy.agorise.crystalwallet.util.PasswordManager;
|
||||||
import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel;
|
import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel;
|
||||||
|
@ -42,6 +50,14 @@ public class PinSecurityFragment extends Fragment implements UIValidatorListener
|
||||||
@BindView(R.id.tvConfirmPinError)
|
@BindView(R.id.tvConfirmPinError)
|
||||||
TextView tvConfirmPinError;
|
TextView tvConfirmPinError;
|
||||||
|
|
||||||
|
@BindView(R.id.btnOK)
|
||||||
|
Button btnOK;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flag to check if validation of fields is correct
|
||||||
|
* */
|
||||||
|
private boolean valid = false;
|
||||||
|
|
||||||
GeneralSettingListViewModel generalSettingListViewModel;
|
GeneralSettingListViewModel generalSettingListViewModel;
|
||||||
GeneralSetting passwordGeneralSetting;
|
GeneralSetting passwordGeneralSetting;
|
||||||
PinSecurityValidator pinSecurityValidator;
|
PinSecurityValidator pinSecurityValidator;
|
||||||
|
@ -64,6 +80,11 @@ public class PinSecurityFragment extends Fragment implements UIValidatorListener
|
||||||
View v = inflater.inflate(R.layout.fragment_pin_security, container, false);
|
View v = inflater.inflate(R.layout.fragment_pin_security, container, false);
|
||||||
ButterKnife.bind(this, v);
|
ButterKnife.bind(this, v);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initially not enabled til it passes validations
|
||||||
|
* */
|
||||||
|
btnOK.setEnabled(false);
|
||||||
|
|
||||||
generalSettingListViewModel = ViewModelProviders.of(this).get(GeneralSettingListViewModel.class);
|
generalSettingListViewModel = ViewModelProviders.of(this).get(GeneralSettingListViewModel.class);
|
||||||
LiveData<List<GeneralSetting>> generalSettingsLiveData = generalSettingListViewModel.getGeneralSettingList();
|
LiveData<List<GeneralSetting>> generalSettingsLiveData = generalSettingListViewModel.getGeneralSettingList();
|
||||||
|
|
||||||
|
@ -73,6 +94,35 @@ public class PinSecurityFragment extends Fragment implements UIValidatorListener
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@OnClick(R.id.btnOK)
|
||||||
|
void okClic(final View view) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Only can continue if the fields are correctly validated
|
||||||
|
* */
|
||||||
|
if(valid){
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Question if continue or not
|
||||||
|
* */
|
||||||
|
final QuestionDialog questionDialog = new QuestionDialog(getActivity());
|
||||||
|
questionDialog.setText(getActivity().getString(R.string.question_continue));
|
||||||
|
questionDialog.setOnNegative(new NegativeResponse() {
|
||||||
|
@Override
|
||||||
|
public void onNegative(@NotNull DialogMaterial dialogMaterial) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
questionDialog.setOnPositive(new PositiveResponse() {
|
||||||
|
@Override
|
||||||
|
public void onPositive() {
|
||||||
|
savePassword();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
questionDialog.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@OnTextChanged(value = R.id.etNewPin,
|
@OnTextChanged(value = R.id.etNewPin,
|
||||||
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
|
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
|
||||||
void afterNewPinChanged(Editable editable) {
|
void afterNewPinChanged(Editable editable) {
|
||||||
|
@ -108,21 +158,34 @@ public class PinSecurityFragment extends Fragment implements UIValidatorListener
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pinSecurityValidator.isValid()){
|
if (pinSecurityValidator.isValid()){
|
||||||
CharSequence text = "Your password has been sucessfully changed!";
|
//savePassword();
|
||||||
int duration = Toast.LENGTH_SHORT;
|
|
||||||
|
|
||||||
Toast toast = Toast.makeText(getContext(), text, duration);
|
//Now is valid
|
||||||
toast.show();
|
valid = true;
|
||||||
|
|
||||||
savePassword(etNewPin.getText().toString());
|
/*
|
||||||
|
* Enable ok button to continue
|
||||||
|
* */
|
||||||
|
btnOK.setEnabled(true);
|
||||||
|
|
||||||
|
|
||||||
clearFields();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void savePassword(){
|
||||||
|
CharSequence text = "Your password has been sucessfully changed!";
|
||||||
|
int duration = Toast.LENGTH_SHORT;
|
||||||
|
|
||||||
|
Toast toast = Toast.makeText(getContext(), text, duration);
|
||||||
|
toast.show();
|
||||||
|
|
||||||
|
savePassword(etNewPin.getText().toString());
|
||||||
|
|
||||||
|
|
||||||
|
clearFields();
|
||||||
|
}
|
||||||
|
|
||||||
public void savePassword(String password) {
|
public void savePassword(String password) {
|
||||||
String passwordEncripted = PasswordManager.encriptPassword(password);
|
String passwordEncripted = PasswordManager.encriptPassword(password);
|
||||||
CrystalSecurityMonitor.getInstance(null).setPasswordSecurity(passwordEncripted);
|
CrystalSecurityMonitor.getInstance(null).setPasswordSecurity(passwordEncripted);
|
||||||
|
@ -131,6 +194,15 @@ public class PinSecurityFragment extends Fragment implements UIValidatorListener
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onValidationFailed(final ValidationField field) {
|
public void onValidationFailed(final ValidationField field) {
|
||||||
|
|
||||||
|
//Still false
|
||||||
|
valid = false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Disable til it passes validations
|
||||||
|
* */
|
||||||
|
btnOK.setEnabled(false);
|
||||||
|
|
||||||
this.getActivity().runOnUiThread(new Runnable() {
|
this.getActivity().runOnUiThread(new Runnable() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -36,4 +36,15 @@
|
||||||
android:textColor="@color/red"
|
android:textColor="@color/red"
|
||||||
android:layout_below="@+id/etConfirmPin" />
|
android:layout_below="@+id/etConfirmPin" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnOK"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:theme="@style/WhiteButton"
|
||||||
|
android:text="@string/ok"
|
||||||
|
android:layout_below="@+id/etConfirmPin"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:layout_centerHorizontal="true"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
|
@ -369,6 +369,8 @@
|
||||||
<string name="permission_denied_camera">Permission Denied. You cannot use the QR camera. Please allow this permission in App Settings.</string>
|
<string name="permission_denied_camera">Permission Denied. You cannot use the QR camera. Please allow this permission in App Settings.</string>
|
||||||
<string name="permission_granted_camera">Great!! Now you can use the QR camera.</string>
|
<string name="permission_granted_camera">Great!! Now you can use the QR camera.</string>
|
||||||
|
|
||||||
|
<string name="question_continue">¿Are you sure to continue?</string>
|
||||||
|
|
||||||
<string name="select">"Select</string>
|
<string name="select">"Select</string>
|
||||||
<string name="are_you_sure">"Are you sure?</string>
|
<string name="are_you_sure">"Are you sure?</string>
|
||||||
<string name="is_already_added">is already added</string>
|
<string name="is_already_added">is already added</string>
|
||||||
|
|
Loading…
Reference in a new issue