216 lines
8.5 KiB
Java
216 lines
8.5 KiB
Java
package cy.agorise.crystalwallet.activities;
|
|
|
|
import android.arch.lifecycle.ViewModelProviders;
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.support.v7.app.AppCompatActivity;
|
|
import android.text.Editable;
|
|
import android.widget.Button;
|
|
import android.widget.EditText;
|
|
import android.widget.TextView;
|
|
import android.widget.Toast;
|
|
|
|
import butterknife.BindView;
|
|
import butterknife.ButterKnife;
|
|
import butterknife.OnClick;
|
|
import butterknife.OnTextChanged;
|
|
import cy.agorise.crystalwallet.R;
|
|
import cy.agorise.crystalwallet.enums.CryptoNet;
|
|
import cy.agorise.crystalwallet.enums.SeedType;
|
|
import cy.agorise.crystalwallet.manager.BitsharesAccountManager;
|
|
import cy.agorise.crystalwallet.models.AccountSeed;
|
|
import cy.agorise.crystalwallet.models.CryptoNetAccount;
|
|
import cy.agorise.crystalwallet.models.GrapheneAccount;
|
|
import cy.agorise.crystalwallet.models.GrapheneAccountInfo;
|
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestListener;
|
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests;
|
|
import cy.agorise.crystalwallet.requestmanagers.ImportBackupRequest;
|
|
import cy.agorise.crystalwallet.requestmanagers.ValidateImportBitsharesAccountRequest;
|
|
import cy.agorise.crystalwallet.viewmodels.AccountSeedViewModel;
|
|
import cy.agorise.crystalwallet.viewmodels.CryptoNetAccountViewModel;
|
|
import cy.agorise.crystalwallet.viewmodels.GrapheneAccountInfoViewModel;
|
|
import cy.agorise.crystalwallet.viewmodels.validators.ImportSeedValidator;
|
|
import cy.agorise.crystalwallet.viewmodels.validators.UIValidatorListener;
|
|
import cy.agorise.crystalwallet.viewmodels.validators.validationfields.ValidationField;
|
|
|
|
public class ImportSeedActivity extends AppCompatActivity implements UIValidatorListener {
|
|
|
|
AccountSeedViewModel accountSeedViewModel;
|
|
ImportSeedValidator importSeedValidator;
|
|
|
|
@BindView(R.id.etPin)
|
|
EditText etPin;
|
|
@BindView(R.id.tvPinError)
|
|
TextView tvPinError;
|
|
|
|
@BindView(R.id.etPinConfirmation)
|
|
EditText etPinConfirmation;
|
|
@BindView(R.id.tvPinConfirmationError)
|
|
TextView tvPinConfirmationError;
|
|
|
|
@BindView(R.id.etSeedWords)
|
|
EditText etSeedWords;
|
|
@BindView(R.id.tvSeedWordsError)
|
|
TextView tvSeedWordsError;
|
|
|
|
@BindView (R.id.etAccountName)
|
|
EditText etAccountName;
|
|
@BindView(R.id.tvAccountNameError)
|
|
TextView tvAccountNameError;
|
|
|
|
@BindView(R.id.btnImport)
|
|
Button btnImport;
|
|
|
|
@BindView(R.id.btnCancel)
|
|
Button btnCancel;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.import_seed);
|
|
|
|
ButterKnife.bind(this);
|
|
|
|
btnImport.setEnabled(false);
|
|
accountSeedViewModel = ViewModelProviders.of(this).get(AccountSeedViewModel.class);
|
|
importSeedValidator = new ImportSeedValidator(this.getApplicationContext(),etPin,etPinConfirmation,etAccountName,etSeedWords);
|
|
importSeedValidator.setListener(this);
|
|
}
|
|
|
|
@OnTextChanged(value = R.id.etPin,
|
|
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
|
|
void afterPinChanged(Editable editable) {
|
|
this.importSeedValidator.validate();
|
|
}
|
|
|
|
@OnTextChanged(value = R.id.etPinConfirmation,
|
|
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
|
|
void afterPinConfirmationChanged(Editable editable) {
|
|
this.importSeedValidator.validate();
|
|
}
|
|
|
|
@OnTextChanged(value = R.id.etSeedWords,
|
|
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
|
|
void afterSeedWordsChanged(Editable editable) {
|
|
this.importSeedValidator.validate();
|
|
}
|
|
|
|
|
|
@OnTextChanged(value = R.id.etAccountName,
|
|
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
|
|
void afterAccountNameChanged(Editable editable) {
|
|
this.importSeedValidator.validate();
|
|
}
|
|
|
|
@OnClick(R.id.btnCancel)
|
|
public void cancel(){
|
|
this.finish();
|
|
}
|
|
|
|
@OnClick(R.id.btnImport)
|
|
public void importSeed(){
|
|
final ImportSeedActivity thisActivity = this;
|
|
|
|
if (this.importSeedValidator.isValid()) {
|
|
|
|
final ValidateImportBitsharesAccountRequest validatorRequest =
|
|
new ValidateImportBitsharesAccountRequest(etAccountName.getText().toString(), etSeedWords.getText().toString());
|
|
|
|
validatorRequest.setListener(new CryptoNetInfoRequestListener() {
|
|
@Override
|
|
public void onCarryOut() {
|
|
if (!validatorRequest.getStatus().equals(ValidateImportBitsharesAccountRequest.StatusCode.SUCCEEDED)) {
|
|
String errorText = "An error ocurred attempting to import the account";
|
|
|
|
switch (validatorRequest.getStatus()){
|
|
case PETITION_FAILED:
|
|
case NO_INTERNET:
|
|
case NO_SERVER_CONNECTION:
|
|
errorText = "There was an error with the connection. Try again later";
|
|
break;
|
|
case ACCOUNT_DOESNT_EXIST:
|
|
errorText = "The account doesn't exists";
|
|
break;
|
|
case BAD_SEED:
|
|
errorText = "The seed is not valid";
|
|
break;
|
|
case NO_ACCOUNT_DATA:
|
|
errorText = "The account doesn't have any data";
|
|
break;
|
|
}
|
|
|
|
Toast.makeText(thisActivity.getApplicationContext(),errorText,Toast.LENGTH_LONG).show();
|
|
} else {
|
|
Intent intent = new Intent(thisActivity, IntroActivity.class);
|
|
startActivity(intent);
|
|
}
|
|
}
|
|
});
|
|
/*CryptoNetInfoRequests.getInstance().addRequest(validatorRequest);
|
|
|
|
AccountSeed seed = new AccountSeed();
|
|
|
|
//TODO verify if words are already in the db
|
|
//TODO check if name has been asigned to other seed
|
|
seed.setMasterSeed(etSeedWords.getText().toString());
|
|
seed.setName(etAccountName.getText().toString());
|
|
seed.setType(SeedType.BRAINKEY);
|
|
|
|
accountSeedViewModel.addSeed(seed);
|
|
|
|
CryptoNetAccountViewModel cryptoNetAccountViewModel = ViewModelProviders.of(this).get(CryptoNetAccountViewModel.class);
|
|
GrapheneAccountInfoViewModel grapheneAccountInfoViewModel = ViewModelProviders.of(this).get(GrapheneAccountInfoViewModel.class);
|
|
CryptoNetAccount cryptoNetAccount = new CryptoNetAccount();
|
|
cryptoNetAccount.setSeedId(seed.getId());
|
|
cryptoNetAccount.setAccountIndex(0);
|
|
cryptoNetAccount.setCryptoNet(cy.agorise.crystalwallet.enums.CryptoNet.BITSHARES);
|
|
cryptoNetAccountViewModel.addCryptoNetAccount(cryptoNetAccount);
|
|
GrapheneAccountInfo grapheneAccountInfo = new GrapheneAccountInfo(cryptoNetAccount.getId());
|
|
grapheneAccountInfo.setName(etAccountName.getText().toString());
|
|
grapheneAccountInfoViewModel.addGrapheneAccountInfo(grapheneAccountInfo);
|
|
|
|
this.finish();*/
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onValidationSucceeded(final ValidationField field) {
|
|
final ImportSeedActivity activity = this;
|
|
|
|
activity.runOnUiThread(new Runnable() {
|
|
public void run() {
|
|
|
|
if (field.getView() == etPin) {
|
|
tvPinError.setText("");
|
|
} else if (field.getView() == etPinConfirmation){
|
|
tvPinConfirmationError.setText("");
|
|
} else if (field.getView() == etAccountName){
|
|
tvAccountNameError.setText("");
|
|
} else if (field.getView() == etSeedWords){
|
|
tvSeedWordsError.setText("");
|
|
}
|
|
|
|
if (activity.importSeedValidator.isValid()){
|
|
btnImport.setEnabled(true);
|
|
} else {
|
|
btnImport.setEnabled(false);
|
|
}
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void onValidationFailed(ValidationField field) {
|
|
if (field.getView() == etPin) {
|
|
tvPinError.setText(field.getMessage());
|
|
} else if (field.getView() == etPinConfirmation){
|
|
tvPinConfirmationError.setText(field.getMessage());
|
|
} else if (field.getView() == etAccountName){
|
|
tvAccountNameError.setText(field.getMessage());
|
|
} else if (field.getView() == etSeedWords){
|
|
tvSeedWordsError.setText(field.getMessage());
|
|
}
|
|
}
|
|
}
|