-In the import seed activity add all the fixed strings to android string resources

-In the import seed window remove the first service connection that validates the seed, it seems that in the second service it does it too
-In the import seed activity adjust the new error strings to the new error show model
-In the import seed activity onlye enable the CREATE WALLET button if all the fields are correctly validate, specially the PIN mismatch error
This commit is contained in:
dtvv 2018-10-24 02:38:48 -05:00
parent 8e55afad55
commit c3c6677faa
2 changed files with 97 additions and 34 deletions

View file

@ -3,7 +3,6 @@ package cy.agorise.crystalwallet.activities;
import android.app.Activity; import android.app.Activity;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.text.Editable; import android.text.Editable;
@ -12,7 +11,6 @@ import android.view.View;
import android.widget.Button; 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 com.thekhaeng.pushdownanim.PushDownAnim; import com.thekhaeng.pushdownanim.PushDownAnim;
@ -23,7 +21,6 @@ import butterknife.ButterKnife;
import butterknife.OnClick; 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.dialogs.material.CrystalLoading; import cy.agorise.crystalwallet.dialogs.material.CrystalLoading;
import cy.agorise.crystalwallet.dialogs.material.DialogMaterial; import cy.agorise.crystalwallet.dialogs.material.DialogMaterial;
import cy.agorise.crystalwallet.dialogs.material.NegativeResponse; import cy.agorise.crystalwallet.dialogs.material.NegativeResponse;
@ -77,6 +74,11 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
final Activity activity = this; final Activity activity = this;
/*
* Flag to check correct PIN equality
* */
private boolean pinsOK = false;
@ -127,20 +129,20 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
/*
* Validate that PINs are equals
* */
validatePINS();
/* /*
* If all is ready to continue enable the button, contrarie case disable it * If all is ready to continue enable the button, contrarie case disable it
* */ * */
if(allFieldsAreFill()){ if(allFieldsAreOK()){
enableCreate(); enableCreate();
} }
else{ else{
disableCreate(); disableCreate();
} }
/*
* Validate that PINs are equals
* */
validatePINS();
} }
}); });
etPinConfirmation.addTextChangedListener(new TextWatcher() { etPinConfirmation.addTextChangedListener(new TextWatcher() {
@ -157,20 +159,20 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
/*
* Validate that PINs are equals
* */
validatePINS();
/* /*
* If all is ready to continue enable the button, contrarie case disable it * If all is ready to continue enable the button, contrarie case disable it
* */ * */
if(allFieldsAreFill()){ if(allFieldsAreOK()){
enableCreate(); enableCreate();
} }
else{ else{
disableCreate(); disableCreate();
} }
/*
* Validate that PINs are equals
* */
validatePINS();
} }
}); });
etSeedWords.addTextChangedListener(new TextWatcher() { etSeedWords.addTextChangedListener(new TextWatcher() {
@ -187,10 +189,15 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
/*
* Validate that PINs are equals
* */
validatePINS();
/* /*
* If all is ready to continue enable the button, contrarie case disable it * If all is ready to continue enable the button, contrarie case disable it
* */ * */
if(allFieldsAreFill()){ if(allFieldsAreOK()){
enableCreate(); enableCreate();
} }
else{ else{
@ -200,7 +207,7 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
/* /*
* Hide error field * Hide error field
* */ * */
txtErrorAccount.setVisibility(View.INVISIBLE); clearErrors();
} }
}); });
etAccountName.addTextChangedListener(new TextWatcher() { etAccountName.addTextChangedListener(new TextWatcher() {
@ -217,10 +224,15 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
/*
* Validate that PINs are equals
* */
validatePINS();
/* /*
* If all is ready to continue enable the button, contrarie case disable it * If all is ready to continue enable the button, contrarie case disable it
* */ * */
if(allFieldsAreFill()){ if(allFieldsAreOK()){
enableCreate(); enableCreate();
} }
else{ else{
@ -234,6 +246,13 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
importSeedValidator.setListener(this); importSeedValidator.setListener(this);
} }
private void clearErrors(){
txtErrorPIN.setVisibility(View.INVISIBLE);
txtErrorAccount.setVisibility(View.INVISIBLE);
}
/* /*
* Validate that PINs are equals * Validate that PINs are equals
* */ * */
@ -243,30 +262,35 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
final String confirmoPIN = etPinConfirmation.getText().toString().trim(); final String confirmoPIN = etPinConfirmation.getText().toString().trim();
if(!pin.isEmpty() && !confirmoPIN.isEmpty()){ if(!pin.isEmpty() && !confirmoPIN.isEmpty()){
if(pin.compareTo(confirmoPIN)!=0){ if(pin.compareTo(confirmoPIN)!=0){
pinsOK = false;
txtErrorPIN.setVisibility(View.VISIBLE); txtErrorPIN.setVisibility(View.VISIBLE);
} }
else{ else{
txtErrorPIN.setVisibility(View.INVISIBLE); pinsOK = true;
clearErrors();
} }
} }
else{ else{
txtErrorPIN.setVisibility(View.INVISIBLE); pinsOK = false;
clearErrors();
} }
} }
/* /*
* Method to validate if all the fields are fill * Method to validate if all the fields are fill and correctly
* */ * */
private boolean allFieldsAreFill(){ private boolean allFieldsAreOK(){
boolean complete = false; boolean complete = false;
if( etPin.getText().toString().trim().compareTo("")!=0 && if( etPin.getText().toString().trim().compareTo("")!=0 &&
etPinConfirmation.getText().toString().trim().compareTo("")!=0 && etPinConfirmation.getText().toString().trim().compareTo("")!=0 &&
etSeedWords.getText().toString().trim().compareTo("")!=0 && etSeedWords.getText().toString().trim().compareTo("")!=0 &&
etAccountName.getText().toString().trim().compareTo("")!=0){ etAccountName.getText().toString().trim().compareTo("")!=0){
if(pinsOK){
complete = true; complete = true;
} }
}
return complete; return complete;
} }
@ -324,10 +348,15 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
final CrystalLoading crystalLoading = new CrystalLoading(activity); final CrystalLoading crystalLoading = new CrystalLoading(activity);
crystalLoading.show(); crystalLoading.show();
/*
* Final service connection
* */
finalStep(crystalLoading);
/* /*
* Validate mnemonic with the server * Validate mnemonic with the server
* */ * */
final ValidateImportBitsharesAccountRequest request = new ValidateImportBitsharesAccountRequest(etAccountName.getText().toString().trim(),etSeedWords.getText().toString().trim(),activity); /*final ValidateImportBitsharesAccountRequest request = new ValidateImportBitsharesAccountRequest(etAccountName.getText().toString().trim(),etSeedWords.getText().toString().trim(),activity);
request.setListener(new CryptoNetInfoRequestListener() { request.setListener(new CryptoNetInfoRequestListener() {
@Override @Override
public void onCarryOut() { public void onCarryOut() {
@ -335,9 +364,6 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
//Correct //Correct
/*
* Final service connection
* */
finalStep(crystalLoading); finalStep(crystalLoading);
} }
@ -350,7 +376,7 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
} }
} }
}); });
CryptoNetInfoRequests.getInstance().addRequest(request); CryptoNetInfoRequests.getInstance().addRequest(request);*/
} }
}); });
@ -378,26 +404,57 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
crystalLoading.dismiss(); crystalLoading.dismiss();
if (!validatorRequest.getStatus().equals(ValidateImportBitsharesAccountRequest.StatusCode.SUCCEEDED)) { if (!validatorRequest.getStatus().equals(ValidateImportBitsharesAccountRequest.StatusCode.SUCCEEDED)) {
String errorText = "An error ocurred attempting to import the account";
switch (validatorRequest.getStatus()){ switch (validatorRequest.getStatus()){
case PETITION_FAILED: case PETITION_FAILED:
case NO_INTERNET: case NO_INTERNET:
case NO_SERVER_CONNECTION: case NO_SERVER_CONNECTION:
errorText = "There was an error with the connection. Try again later"; activity.runOnUiThread(new Runnable() {
@Override
public void run() {
txtErrorAccount.setText(activity.getResources().getString(R.string.NO_SERVER_CONNECTION));
}
});
break; break;
case ACCOUNT_DOESNT_EXIST: case ACCOUNT_DOESNT_EXIST:
errorText = "The account doesn't exists"; activity.runOnUiThread(new Runnable() {
@Override
public void run() {
txtErrorAccount.setText(activity.getResources().getString(R.string.ACCOUNT_DOESNT_EXIST));
}
});
break; break;
case BAD_SEED: case BAD_SEED:
errorText = "The seed is not valid"; activity.runOnUiThread(new Runnable() {
@Override
public void run() {
txtErrorAccount.setText(activity.getResources().getString(R.string.BAD_SEED));
}
});
break; break;
case NO_ACCOUNT_DATA: case NO_ACCOUNT_DATA:
errorText = "The account doesn't have any data"; activity.runOnUiThread(new Runnable() {
@Override
public void run() {
txtErrorAccount.setText(activity.getResources().getString(R.string.NO_ACCOUNT_DATA));
}
});
break; break;
default:
txtErrorAccount.setText(activity.getResources().getString(R.string.ERROR_UNRECOGNIZABLE));
} }
Toast.makeText(thisActivity.getApplicationContext(),errorText,Toast.LENGTH_LONG).show(); activity.runOnUiThread(new Runnable() {
@Override
public void run() {
txtErrorAccount.setVisibility(View.VISIBLE);
}
});
//Toast.makeText(thisActivity.getApplicationContext(),errorText,Toast.LENGTH_LONG).show();
} else { } else {
Intent intent = new Intent(thisActivity, BoardActivity.class); Intent intent = new Intent(thisActivity, BoardActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

View file

@ -91,6 +91,12 @@
<string name="save">SAVE</string> <string name="save">SAVE</string>
<string name="next">NEXT</string> <string name="next">NEXT</string>
<string name="ERROR_UNRECOGNIZABLE">An error ocurred attempting to import the account</string>
<string name="NO_ACCOUNT_DATA">The account does not have any data</string>
<string name="BAD_SEED">The seed is not valid</string>
<string name="ACCOUNT_DOESNT_EXIST">The account does not exists</string>
<string name="NO_SERVER_CONNECTION">There was an error with the connection. Try again later</string>
<string name="ASK_PERMISSION">A permission need to be granted before to continue</string> <string name="ASK_PERMISSION">A permission need to be granted before to continue</string>
<string name="please_enter_brainkey">Please enter brainkey</string> <string name="please_enter_brainkey">Please enter brainkey</string>