diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 240a2e3..453f8ae 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,6 +26,8 @@ + + diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/CreateSeedActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/CreateSeedActivity.java index b73db04..9e306a0 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/activities/CreateSeedActivity.java +++ b/app/src/main/java/cy/agorise/crystalwallet/activities/CreateSeedActivity.java @@ -13,6 +13,9 @@ import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.OnTextChanged; import cy.agorise.crystalwallet.R; +import cy.agorise.crystalwallet.cryptonetinforequests.CryptoNetInfoRequestListener; +import cy.agorise.crystalwallet.cryptonetinforequests.CryptoNetInfoRequests; +import cy.agorise.crystalwallet.cryptonetinforequests.ValidateCreateBitsharesAccountRequest; import cy.agorise.crystalwallet.enums.SeedType; import cy.agorise.crystalwallet.models.AccountSeed; import cy.agorise.crystalwallet.models.CryptoNetAccount; @@ -25,6 +28,8 @@ import cy.agorise.crystalwallet.viewmodels.validators.ImportSeedValidator; import cy.agorise.crystalwallet.viewmodels.validators.UIValidatorListener; import cy.agorise.crystalwallet.viewmodels.validators.validationfields.ValidationField; +import static cy.agorise.crystalwallet.enums.SeedType.BIP39; + public class CreateSeedActivity extends AppCompatActivity implements UIValidatorListener { AccountSeedViewModel accountSeedViewModel; @@ -40,8 +45,8 @@ public class CreateSeedActivity extends AppCompatActivity implements UIValidator @BindView(R.id.tvPinConfirmationError) TextView tvPinConfirmationError; - @BindView(R.id.tvSeedWords) - TextView tvSeedWords; + //@BindView(R.id.tvSeedWords) + //TextView tvSeedWords; @BindView (R.id.etAccountName) EditText etAccountName; @@ -58,12 +63,11 @@ public class CreateSeedActivity extends AppCompatActivity implements UIValidator protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.create_seed); - ButterKnife.bind(this); btnCreate.setEnabled(false); accountSeedViewModel = ViewModelProviders.of(this).get(AccountSeedViewModel.class); - createSeedValidator = new CreateSeedValidator(this.getApplicationContext(),etPin,etPinConfirmation,etAccountName,tvSeedWords); + createSeedValidator = new CreateSeedValidator(this.getApplicationContext(),etPin,etPinConfirmation,etAccountName); createSeedValidator.setListener(this); } @@ -79,12 +83,12 @@ public class CreateSeedActivity extends AppCompatActivity implements UIValidator this.createSeedValidator.validate(); } - @OnTextChanged(value = R.id.etSeedWords, + /*@OnTextChanged(value = R.id.etSeedWords, callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED) void afterSeedWordsChanged(Editable editable) { this.createSeedValidator.validate(); } - +*/ @OnTextChanged(value = R.id.etAccountName, callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED) @@ -97,31 +101,26 @@ public class CreateSeedActivity extends AppCompatActivity implements UIValidator this.finish(); } - @OnClick(R.id.btnImport) + @OnClick(R.id.btnCreate) public void createSeed(){ if (this.createSeedValidator.isValid()) { - AccountSeed seed = new AccountSeed(); + // Make request to create a bitshare account + final ValidateCreateBitsharesAccountRequest request = + new ValidateCreateBitsharesAccountRequest(etAccountName.getText().toString(), getApplicationContext()); - //TODO verify if words are already in the db - //TODO check if name has been asigned to other seed - seed.setMasterSeed(tvSeedWords.getText().toString()); - seed.setName(etAccountName.getText().toString()); - seed.setType(SeedType.BIP39); + request.setListener(new CryptoNetInfoRequestListener() { + @Override + public void onCarryOut() { + if (request.getAccount() != null){ + finish(); + } else { + createSeedValidator.validate(); + } + } + }); + CryptoNetInfoRequests.getInstance().addRequest(request); - 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(); + //this.finish(); } } @@ -138,14 +137,14 @@ public class CreateSeedActivity extends AppCompatActivity implements UIValidator tvPinConfirmationError.setText(""); } else if (field.getView() == etAccountName){ tvAccountNameError.setText(""); - } else if (field.getView() == etSeedWords){ - tvSeedWordsError.setText(""); - } + } //else if (field.getView() == etSeedWords){ + // tvSeedWordsError.setText(""); + //} - if (activity.importSeedValidator.isValid()){ - btnImport.setEnabled(true); + if (activity.createSeedValidator.isValid()){ + btnCreate.setEnabled(true); } else { - btnImport.setEnabled(false); + btnCreate.setEnabled(false); } } @@ -160,8 +159,8 @@ public class CreateSeedActivity extends AppCompatActivity implements UIValidator tvPinConfirmationError.setText(field.getMessage()); } else if (field.getView() == etAccountName){ tvAccountNameError.setText(field.getMessage()); - } else if (field.getView() == etSeedWords){ - tvSeedWordsError.setText(field.getMessage()); - } + } //else if (field.getView() == etSeedWords){ + // tvSeedWordsError.setText(field.getMessage()); + //} } } diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/IntroActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/IntroActivity.java index a2b5fc5..2aee5b8 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/activities/IntroActivity.java +++ b/app/src/main/java/cy/agorise/crystalwallet/activities/IntroActivity.java @@ -51,6 +51,7 @@ public class IntroActivity extends AppCompatActivity { Intent intent = new Intent(this, ImportSeedActivity.class); startActivity(intent); } else { + //Intent intent = new Intent(this, CreateSeedActivity.class); Intent intent = new Intent(this, BoardActivity.class); startActivity(intent); } diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/SendTransactionFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/SendTransactionFragment.java index 6c37d63..8f44adf 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/fragments/SendTransactionFragment.java +++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/SendTransactionFragment.java @@ -84,6 +84,7 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat private GrapheneAccount grapheneAccount; private CrystalDatabase db; private FloatingActionButton fabSend; + private AlertDialog.Builder builder; public static SendTransactionFragment newInstance(long cryptoNetAccountId) { SendTransactionFragment f = new SendTransactionFragment(); @@ -107,7 +108,8 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat fabSend = getActivity().findViewById(R.id.fabSend); fabSend.hide(); - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.SendTransactionTheme); + //AlertDialog.Builder + builder = new AlertDialog.Builder(getActivity(), R.style.SendTransactionTheme); //builder.setTitle("Send"); LayoutInflater inflater = getActivity().getLayoutInflater(); @@ -169,7 +171,7 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat @Override public void onDestroy() { super.onDestroy(); - btnScanQrCode = ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_NEUTRAL); + // btnScanQrCode = ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_NEUTRAL); Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { diff --git a/app/src/main/java/cy/agorise/crystalwallet/viewmodels/validators/CreateSeedValidator.java b/app/src/main/java/cy/agorise/crystalwallet/viewmodels/validators/CreateSeedValidator.java index aff977d..886dd6d 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/viewmodels/validators/CreateSeedValidator.java +++ b/app/src/main/java/cy/agorise/crystalwallet/viewmodels/validators/CreateSeedValidator.java @@ -2,6 +2,7 @@ package cy.agorise.crystalwallet.viewmodels.validators; import android.content.Context; import android.widget.EditText; +import android.widget.TextView; import cy.agorise.crystalwallet.viewmodels.validators.validationfields.BitsharesAccountMnemonicValidationField; import cy.agorise.crystalwallet.viewmodels.validators.validationfields.BitsharesAccountNameDoesntExistsValidationField; @@ -15,11 +16,10 @@ import cy.agorise.crystalwallet.viewmodels.validators.validationfields.PinValida public class CreateSeedValidator extends UIValidator { - public CreateSeedValidator(Context context, EditText pinEdit, EditText pinConfirmationEdit, EditText bitsharesAccountNameEdit, TextView mnemonicTextView){ + public CreateSeedValidator(Context context, EditText pinEdit, EditText pinConfirmationEdit, EditText bitsharesAccountNameEdit){ super(context); this.addField(new PinValidationField(pinEdit)); this.addField(new PinConfirmationValidationField(pinEdit,pinConfirmationEdit)); this.addField(new BitsharesAccountNameDoesntExistsValidationField(bitsharesAccountNameEdit)); - this.addField(new BitsharesAccountMnemonicValidationField(mnemonicTextView)); } } diff --git a/app/src/main/java/cy/agorise/crystalwallet/viewmodels/validators/validationfields/BitsharesAccountNameDoesntExistsValidationField.java b/app/src/main/java/cy/agorise/crystalwallet/viewmodels/validators/validationfields/BitsharesAccountNameDoesntExistsValidationField.java index 152effb..79c965a 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/viewmodels/validators/validationfields/BitsharesAccountNameDoesntExistsValidationField.java +++ b/app/src/main/java/cy/agorise/crystalwallet/viewmodels/validators/validationfields/BitsharesAccountNameDoesntExistsValidationField.java @@ -24,22 +24,30 @@ public class BitsharesAccountNameDoesntExistsValidationField extends ValidationF final String newValue = accountNameField.getText().toString(); this.setLastValue(newValue); this.startValidating(); - final ValidationField field = this; - final ValidateExistBitsharesAccountRequest request = new ValidateExistBitsharesAccountRequest(newValue); - request.setListener(new CryptoNetInfoRequestListener() { - @Override - public void onCarryOut() { - if (request.getAccountExists()){ - setValidForValue(newValue, false); - setMessage(validator.getContext().getResources().getString(R.string.account_name_already_exist)); - validator.validationFailed(field); - } else { - setValidForValue(newValue, true); - validator.validationSucceeded(field); + if (newValue.equals("")){ + setValidForValue("", false); + setMessage(""); + validator.validationFailed(this); + } else { + + final ValidationField field = this; + + final ValidateExistBitsharesAccountRequest request = new ValidateExistBitsharesAccountRequest(newValue); + request.setListener(new CryptoNetInfoRequestListener() { + @Override + public void onCarryOut() { + if (request.getAccountExists()) { + setValidForValue(newValue, false); + setMessage(validator.getContext().getResources().getString(R.string.account_name_already_exist,"'"+newValue+"'")); + validator.validationFailed(field); + } else { + setValidForValue(newValue, true); + validator.validationSucceeded(field); + } } - } - }); - CryptoNetInfoRequests.getInstance().addRequest(request); + }); + CryptoNetInfoRequests.getInstance().addRequest(request); + } } } diff --git a/app/src/main/res/layout/create_seed.xml b/app/src/main/res/layout/create_seed.xml index c8adc6d..e31aa8e 100644 --- a/app/src/main/res/layout/create_seed.xml +++ b/app/src/main/res/layout/create_seed.xml @@ -73,36 +73,6 @@ android:textColor="@color/red" android:textStyle="bold" /> - - - - - -