2017-10-01 01:52:34 +00:00
|
|
|
package cy.agorise.crystalwallet.activities;
|
|
|
|
|
|
|
|
import android.arch.lifecycle.LifecycleActivity;
|
|
|
|
import android.arch.lifecycle.ViewModelProviders;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.support.v7.app.AppCompatActivity;
|
2017-10-03 02:25:58 +00:00
|
|
|
import android.text.Editable;
|
2017-10-01 01:52:34 +00:00
|
|
|
import android.widget.Button;
|
2017-10-01 19:58:08 +00:00
|
|
|
import android.widget.EditText;
|
2017-10-01 01:52:34 +00:00
|
|
|
import android.widget.TextView;
|
2017-10-05 00:54:24 +00:00
|
|
|
import android.widget.Toast;
|
2017-10-01 01:52:34 +00:00
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import butterknife.BindView;
|
|
|
|
import butterknife.ButterKnife;
|
|
|
|
import butterknife.OnClick;
|
2017-10-03 02:25:58 +00:00
|
|
|
import butterknife.OnTextChanged;
|
2017-10-01 01:52:34 +00:00
|
|
|
import cy.agorise.crystalwallet.R;
|
|
|
|
import cy.agorise.crystalwallet.models.AccountSeed;
|
|
|
|
import cy.agorise.crystalwallet.viewmodels.AccountSeedListViewModel;
|
|
|
|
import cy.agorise.crystalwallet.viewmodels.AccountSeedViewModel;
|
|
|
|
import cy.agorise.crystalwallet.viewmodels.TransactionListViewModel;
|
2017-10-03 02:25:58 +00:00
|
|
|
import cy.agorise.crystalwallet.viewmodels.validators.ImportSeedValidator;
|
|
|
|
import cy.agorise.crystalwallet.viewmodels.validators.ImportSeedValidatorListener;
|
2017-10-05 02:46:55 +00:00
|
|
|
import cy.agorise.crystalwallet.viewmodels.validators.ValidationField;
|
2017-10-01 01:52:34 +00:00
|
|
|
import cy.agorise.crystalwallet.views.TransactionListView;
|
|
|
|
|
2017-10-03 02:25:58 +00:00
|
|
|
public class ImportSeedActivity extends AppCompatActivity implements ImportSeedValidatorListener {
|
2017-10-01 01:52:34 +00:00
|
|
|
|
|
|
|
AccountSeedViewModel accountSeedViewModel;
|
2017-10-03 02:25:58 +00:00
|
|
|
ImportSeedValidator importSeedValidator;
|
2017-10-01 01:52:34 +00:00
|
|
|
|
2017-10-05 02:46:55 +00:00
|
|
|
@BindView(R.id.etPin)
|
|
|
|
EditText etPin;
|
|
|
|
@BindView(R.id.tvPinError)
|
|
|
|
TextView tvPinError;
|
2017-10-01 01:52:34 +00:00
|
|
|
|
2017-10-05 02:46:55 +00:00
|
|
|
@BindView(R.id.etPinConfirmation)
|
|
|
|
EditText etPinConfirmation;
|
|
|
|
@BindView(R.id.tvPinConfirmationError)
|
|
|
|
TextView tvPinConfirmationError;
|
2017-10-01 01:52:34 +00:00
|
|
|
|
|
|
|
@BindView(R.id.etSeedWords)
|
2017-10-01 19:58:08 +00:00
|
|
|
EditText etSeedWords;
|
|
|
|
|
|
|
|
@BindView (R.id.etAccountName)
|
|
|
|
EditText etAccountName;
|
2017-10-05 02:46:55 +00:00
|
|
|
@BindView(R.id.tvAccountNameError)
|
|
|
|
TextView tvAccountNameError;
|
2017-10-01 01:52:34 +00:00
|
|
|
|
|
|
|
@BindView(R.id.btnImport)
|
|
|
|
Button btnImport;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
setContentView(R.layout.import_seed);
|
|
|
|
|
|
|
|
ButterKnife.bind(this);
|
|
|
|
|
|
|
|
accountSeedViewModel = ViewModelProviders.of(this).get(AccountSeedViewModel.class);
|
2017-10-03 02:25:58 +00:00
|
|
|
importSeedValidator = accountSeedViewModel.getValidator();
|
|
|
|
|
|
|
|
importSeedValidator.setListener(this);
|
|
|
|
}
|
|
|
|
|
2017-10-05 02:46:55 +00:00
|
|
|
@OnTextChanged(value = R.id.etPin,
|
|
|
|
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
|
|
|
|
void afterPinChanged(Editable editable) {
|
|
|
|
this.importSeedValidator.validatePin(editable.toString());
|
|
|
|
this.importSeedValidator.validatePinConfirmation(etPinConfirmation.getText().toString(),editable.toString());
|
|
|
|
}
|
|
|
|
|
|
|
|
@OnTextChanged(value = R.id.etPinConfirmation,
|
|
|
|
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
|
|
|
|
void afterPinConfirmationChanged(Editable editable) {
|
|
|
|
this.importSeedValidator.validatePinConfirmation(editable.toString(), etPin.getText().toString());
|
|
|
|
}
|
|
|
|
|
2017-10-03 02:25:58 +00:00
|
|
|
@OnTextChanged(value = R.id.etAccountName,
|
|
|
|
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
|
|
|
|
void afterAccountNameChanged(Editable editable) {
|
2017-10-05 00:54:24 +00:00
|
|
|
this.importSeedValidator.validateAccountName(editable.toString(), etSeedWords.getText().toString());
|
2017-10-01 01:52:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@OnClick(R.id.btnImport)
|
|
|
|
public void importSeed(){
|
2017-10-04 00:58:41 +00:00
|
|
|
if (this.importSeedValidator.isValid()) {
|
|
|
|
AccountSeed seed = new AccountSeed();
|
|
|
|
|
|
|
|
//TODO verify if PIN and PIN confirmation are not null and are the same
|
|
|
|
//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());
|
|
|
|
|
|
|
|
accountSeedViewModel.addSeed(seed);
|
|
|
|
//TODO get back to the previous activity
|
|
|
|
}
|
2017-10-01 01:52:34 +00:00
|
|
|
}
|
2017-10-03 02:25:58 +00:00
|
|
|
|
|
|
|
@Override
|
2017-10-05 02:46:55 +00:00
|
|
|
public void onValidationSucceeded(ValidationField field) {
|
|
|
|
switch (field.getName()){
|
|
|
|
case "pin":
|
|
|
|
tvPinError.setText("");
|
|
|
|
break;
|
|
|
|
case "pinconfirmation":
|
|
|
|
tvPinConfirmationError.setText("");
|
|
|
|
break;
|
|
|
|
case "accountname":
|
|
|
|
tvAccountNameError.setText("");
|
|
|
|
break;
|
|
|
|
}
|
2017-10-03 02:25:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-10-05 02:46:55 +00:00
|
|
|
public void onValidationFailed(ValidationField field) {
|
|
|
|
switch (field.getName()){
|
|
|
|
case "pin":
|
|
|
|
tvPinError.setText(field.getMessage());
|
|
|
|
break;
|
|
|
|
case "pinconfirmation":
|
|
|
|
tvPinConfirmationError.setText(field.getMessage());
|
|
|
|
break;
|
|
|
|
case "accountname":
|
|
|
|
tvAccountNameError.setText(field.getMessage());
|
|
|
|
break;
|
|
|
|
}
|
2017-10-03 02:25:58 +00:00
|
|
|
}
|
2017-10-01 01:52:34 +00:00
|
|
|
}
|