From 3941585740e9e30f13901d7b0a49da52238fc5e6 Mon Sep 17 00:00:00 2001 From: dtvv Date: Wed, 17 Oct 2018 04:14:43 -0500 Subject: [PATCH] When the PIN is typed 4 wrong times, it has to block 15 seconds before make new tries --- .../activities/PinRequestActivity.java | 81 ++++++++++++++++++- .../main/res/layout/activity_pin_request.xml | 12 +++ app/src/main/res/values/strings.xml | 2 + 3 files changed, 93 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/PinRequestActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/PinRequestActivity.java index bfb0be2..b90ed6e 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/activities/PinRequestActivity.java +++ b/app/src/main/java/cy/agorise/crystalwallet/activities/PinRequestActivity.java @@ -12,6 +12,7 @@ import android.text.Editable; import android.view.View; import android.widget.Button; import android.widget.EditText; +import android.widget.TextView; import android.widget.Toast; import org.jetbrains.annotations.NotNull; @@ -41,6 +42,19 @@ public class PinRequestActivity extends AppCompatActivity { @BindView(R.id.btnOK) Button btnOK; + @BindView(R.id.txtBadtry) + TextView txtBadtry; + + /* + * Contains the bad tries + * */ + private int tries = 0; + + /* + * Seconds counter + * */ + private int seconds = 15; + @@ -97,11 +111,74 @@ public class PinRequestActivity extends AppCompatActivity { } else{ + /* + * One more bad try + * */ + ++tries; + + final Activity activity = this; + + etPassword.setTextColor(Color.RED); + + /* + * User can not go more up to 5 bad tries + * */ + if(tries==4){ + tries = 0; + + btnOK.setEnabled(false); + etPassword.setEnabled(false); + txtBadtry.setVisibility(View.VISIBLE); + + txtBadtry.setText(txtBadtry.getText().toString().replace("%%",String.valueOf(seconds))); + + final Timer t = new Timer(); + //Set the schedule function and rate + t.scheduleAtFixedRate(new TimerTask() { + + @Override + public void run() { + + --seconds; + + if(seconds==0){ + t.cancel(); + + seconds = 15; + + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + btnOK.setEnabled(true); + etPassword.setEnabled(true); + txtBadtry.setVisibility(View.INVISIBLE); + etPassword.setText(""); + etPassword.setTextColor(Color.WHITE); + } + }); + } + else{ + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + txtBadtry.setText(activity.getResources().getString(R.string.wrong_pin_wait).replace("%%",String.valueOf(seconds))); + } + }); + } + } + + }, + //Set how long before to start calling the TimerTask (in milliseconds) + 1000, + //Set the amount of time between each execution (in milliseconds) + 1000); + + return; + } + /* * Set in red the rext and reset the password after a period of time * */ - final Activity activity = this; - etPassword.setTextColor(Color.RED); final Timer t = new Timer(); //Set the schedule function and rate t.scheduleAtFixedRate(new TimerTask() { diff --git a/app/src/main/res/layout/activity_pin_request.xml b/app/src/main/res/layout/activity_pin_request.xml index aa4c3b3..b569e94 100644 --- a/app/src/main/res/layout/activity_pin_request.xml +++ b/app/src/main/res/layout/activity_pin_request.xml @@ -45,4 +45,16 @@ android:textSize="18dp" android:layout_alignParentRight="true"/> + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index feb1c38..37d0285 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -206,6 +206,8 @@ Fee OK + Wrong PIN you have to wait %% seconds ... + Loading... Pay to