diff --git a/app/build.gradle b/app/build.gradle
index 838217e..92b3254 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,4 +1,13 @@
apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+
+kapt {
+ generateStubs = true
+ javacOptions {
+ option("-Xmaxerrs", 500)
+ }
+}
android {
compileSdkVersion 27
@@ -43,6 +52,7 @@ dependencies {
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
exclude group: 'com.android.support', module: 'support-annotations'
})
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
//testCompile 'com.android.support.test:runner:1.0.1'
implementation 'com.afollestad.material-dialogs:core:0.9.6.0' //DTVV Thrusday 31 July 2018
implementation 'com.android.support:appcompat-v7:27.1.1'
@@ -52,7 +62,6 @@ dependencies {
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'android.arch.lifecycle:runtime:1.1.1'
implementation 'android.arch.lifecycle:extensions:1.1.1'
- implementation 'android.arch.persistence.room:runtime:1.1.0'
implementation 'android.arch.paging:runtime:1.0.0'
implementation 'com.idescout.sql:sqlscout-server:2.0'
implementation 'com.google.code.gson:gson:2.8.0'
@@ -72,8 +81,15 @@ dependencies {
//testCompile 'junit:junit: 4.12'
testImplementation 'org.mockito:mockito-core:1.10.19'
+ implementation 'android.arch.persistence.room:runtime:1.1.0'
+
+ kapt 'android.arch.persistence.room:runtime:1.1.0'
annotationProcessor 'android.arch.lifecycle:compiler:1.1.1'
+ kapt 'android.arch.lifecycle:compiler:1.1.1'
+ annotationProcessor 'android.arch.lifecycle:compiler:1.1.1'
+ kapt 'android.arch.persistence.room:compiler:1.1.0'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.0'
+ kapt 'com.jakewharton:butterknife-compiler:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
implementation 'com.squareup.picasso:picasso:2.5.2'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a5182a0..ba2bf0d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -31,13 +31,12 @@
+
+
-
-
diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/BackupSeedActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/BackupSeedActivity.java
index 60c25f6..15b7d6b 100644
--- a/app/src/main/java/cy/agorise/crystalwallet/activities/BackupSeedActivity.java
+++ b/app/src/main/java/cy/agorise/crystalwallet/activities/BackupSeedActivity.java
@@ -7,13 +7,10 @@ import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
-import android.graphics.Point;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
-import android.view.Display;
import android.widget.Button;
-import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
@@ -23,6 +20,7 @@ import butterknife.OnClick;
import cy.agorise.crystalwallet.R;
import cy.agorise.crystalwallet.models.AccountSeed;
import cy.agorise.crystalwallet.viewmodels.AccountSeedViewModel;
+
//tvBrainKey
public class BackupSeedActivity extends AppCompatActivity {
diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/CreateSeedActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/CreateSeedActivity.java
deleted file mode 100644
index b589a72..0000000
--- a/app/src/main/java/cy/agorise/crystalwallet/activities/CreateSeedActivity.java
+++ /dev/null
@@ -1,337 +0,0 @@
-package cy.agorise.crystalwallet.activities;
-
-import android.arch.lifecycle.ViewModelProviders;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.design.widget.TextInputLayout;
-import android.text.Editable;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.Button;
-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.dialogs.material.LoadingDialog;
-import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestListener;
-import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests;
-import cy.agorise.crystalwallet.requestmanagers.ValidateCreateBitsharesAccountRequest;
-import cy.agorise.crystalwallet.models.GrapheneAccount;
-import cy.agorise.crystalwallet.viewmodels.AccountSeedViewModel;
-import cy.agorise.crystalwallet.viewmodels.validators.customImpl.interfaces.UIValidatorListener;
-import cy.agorise.crystalwallet.viewmodels.validators.customImpl.validationFields.BitsharesAccountNameValidation;
-import cy.agorise.crystalwallet.viewmodels.validators.customImpl.validationFields.CustomValidationField;
-import cy.agorise.crystalwallet.viewmodels.validators.customImpl.validationFields.PinDoubleConfirmationValidationField;
-import cy.agorise.crystalwallet.views.natives.CustomTextInputEditText;
-
-
-
-/*
-* Commented code backup
-*
-*
-* alertBuilder.setTitle("Processing");
- alertBuilder.setMessage("Creating Bitshares Account");
-
- ------
-
- AlertDialog.Builder alertBuilder = new AlertDialog.Builder(CreateSeedActivity.this,R.style.AppTheme);
- alertBuilder.setView(R.layout.progress_creating_account);
- final AlertDialog processDialog = alertBuilder.create();
- CreateSeedActivity.this.runOnUiThread(new Runnable() { //Run on UI Thread
- @Override
- public void run() {
- processDialog.setCancelable(false);
- processDialog.show();
- processDialog.getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- }
- });
-
- */
-
-
-
-
-
-public class CreateSeedActivity extends CustomActivity {
-
- AccountSeedViewModel accountSeedViewModel;
-
- @BindView(R.id.tilPin)
- TextInputLayout tilPin;
-
- @BindView(R.id.tietPin)
- CustomTextInputEditText tietPin;
-
- @BindView(R.id.tilPinConfirmation)
- TextInputLayout tilPinConfirmation;
-
- @BindView(R.id.tietPinConfirmation)
- CustomTextInputEditText tietPinConfirmation;
-
- @BindView(R.id.tilAccountName)
- TextInputLayout tilAccountName;
-
- @BindView (R.id.tietAccountName)
- CustomTextInputEditText tietAccountName;
-
- @BindView(R.id.btnCreate)
- Button btnCreate;
-
- @BindView(R.id.btnCancel)
- Button btnCancel;
-
-
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.create_seed);
-
- /*
- * Initialice butterknife MVC
- * */
- ButterKnife.bind(this);
-
- /*This button should not be enabled till all the fields be correctly filled*/
- disableCreate();
-
- /*
- * Add the controls to the validator
- * */
- this.fieldsValidator.add(tietPin);
- this.fieldsValidator.add(tietPinConfirmation);
- this.fieldsValidator.add(tietAccountName);
-
- /*
- * Validations listener
- * */
- final UIValidatorListener uiValidatorListener = new UIValidatorListener() {
-
- @Override
- public void onValidationSucceeded(final CustomValidationField customValidationField) {
-
- try{
-
- /*
- * Remove error
- * */
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- final CustomTextInputEditText customTextInputEditText = (CustomTextInputEditText) customValidationField.getCurrentView();
- customTextInputEditText.setError(null);
- }
- });
-
- }catch (Exception e){
- e.printStackTrace();
- }
-
-
- /*
- * Validate if can continue
- * */
- validateFieldsToContinue();
- }
-
- @Override
- public void onValidationFailed(final CustomValidationField customValidationField) {
-
- /*
- * Set error label
- * */
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- final CustomTextInputEditText customTextInputEditText = (CustomTextInputEditText) customValidationField.getCurrentView();
- customTextInputEditText.setError(customTextInputEditText.getFieldValidatorModel().getMessage());
- }
- });
- }
- };
-
- /*
- * Create the pin double validation
- * */
- final PinDoubleConfirmationValidationField pinDoubleConfirmationValidationField = new PinDoubleConfirmationValidationField(this,tietPin,tietPinConfirmation,uiValidatorListener);
-
- /*
- * Listener for the validation for success or fail
- * */
- tietPin.setUiValidator(pinDoubleConfirmationValidationField); //Validator for the field
- tietPinConfirmation.setUiValidator(pinDoubleConfirmationValidationField); //Validator for the field
-
- /*
- * Account name validator
- * */
- final BitsharesAccountNameValidation bitsharesAccountNameValidation = new BitsharesAccountNameValidation(this,tietAccountName,uiValidatorListener);
- bitsharesAccountNameValidation.setOnAccountExist(new BitsharesAccountNameValidation.OnAccountExist() {
- @Override
- public void onAccountExists() {
-
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(globalActivity,getResources().getString(R.string.account_name_already_exist), Toast.LENGTH_LONG).show();
- }
- });
- }
- });
- tietAccountName.setUiValidator(bitsharesAccountNameValidation);
-
- /*
- * This button initially is not enabled til all the field validation be ok
- * */
- disableCreate();
-
- accountSeedViewModel = ViewModelProviders.of(this).get(AccountSeedViewModel.class);
-
- /*
- * Set the focus on the fisrt field and show keyboard
- * */
- tilPin.requestFocus();
- final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.showSoftInput(tilPin, InputMethodManager.SHOW_IMPLICIT);
- }
-
- @OnTextChanged(value = R.id.tietPin,
- callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
- void afterPinChanged(Editable editable) {
- this.fieldsValidator.validate();
-
- /*
- * Validate continue to create account
- * */
- validateFieldsToContinue();
- }
- @OnTextChanged(value = R.id.tietPinConfirmation,
- callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
- void afterPinConfirmationChanged(Editable editable) {
- this.fieldsValidator.validate();
-
- /*
- * Validate continue to create account
- * */
- validateFieldsToContinue();
- }
- @OnTextChanged(value = R.id.tietAccountName,
- callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
- void afterAccountNameChanged(Editable editable) {
- this.fieldsValidator.validate();
-
- /*
- * Always disable till the server response comes
- * */
- disableCreate();
- }
-
-
- @OnClick(R.id.btnCancel)
- public void cancel(){
-
- /*
- * Exit of the activity
- * */
- this.finish();
- }
-
- @OnClick(R.id.btnCreate)
- public void createSeed(){
-
- // Make request to create a bitshare account
- final ValidateCreateBitsharesAccountRequest request =
- new ValidateCreateBitsharesAccountRequest(tietAccountName.getText().toString(), getApplicationContext());
-
-
- //DTVV: Friday 27 July 2018
- //Makes dialog to tell the user that the account is been created
- final LoadingDialog creatingAccountMaterialDialog = new LoadingDialog(this);
- creatingAccountMaterialDialog.setMessage(this.getResources().getString(R.string.window_create_seed_DialogMessage));
- creatingAccountMaterialDialog.build();
- CreateSeedActivity.this.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- creatingAccountMaterialDialog.show();
- }
- });
- request.setListener(new CryptoNetInfoRequestListener() {
- @Override
- public void onCarryOut() {
- creatingAccountMaterialDialog.dismiss();
- if (request.getStatus().equals(ValidateCreateBitsharesAccountRequest.StatusCode.SUCCEEDED)) {
- GrapheneAccount accountSeed = request.getAccount();
- Intent intent = new Intent(getApplicationContext(), BackupSeedActivity.class);
- intent.putExtra("SEED_ID", accountSeed.getId());
- startActivity(intent);
- } else {
- fieldsValidator.validate();
- }
- }
- });
-
- Thread thread = new Thread() {
- @Override
- public void run() {
- CryptoNetInfoRequests.getInstance().addRequest(request);
- }
- };
-
- thread.start();
- }
-
-
-
- /*
- * Validate that all is complete to continue to create
- * */
- private void validateFieldsToContinue(){
-
- boolean result = false; //Contains the final result
-
- boolean pinValid = this.tietPin.getFieldValidatorModel().isValid();
- boolean pinConfirmationValid = this.tietPinConfirmation.getFieldValidatorModel().isValid();
- boolean pinAccountNameValid = this.tietAccountName.getFieldValidatorModel().isValid();
-
- if(pinValid &&
- pinConfirmationValid &&
- pinAccountNameValid){
- result = true; //Validation is correct
- }
-
-
-
- /*
- * If the result is true so the user can continue to the creation of the account
- * */
- if(result){
- enableCreate();
- }
- else{
- disableCreate();
- }
- }
-
-
- /*
- * Enable create button
- * */
- private void enableCreate(){
- btnCreate.setEnabled(true);
- btnCreate.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
- }
-
- /*
- * Disable create button
- * */
- private void disableCreate(){
- btnCreate.setEnabled(false);
- btnCreate.setBackground(getResources().getDrawable(R.drawable.disable_style));
- }
-}
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 a95210a..df9e430 100644
--- a/app/src/main/java/cy/agorise/crystalwallet/activities/PinRequestActivity.java
+++ b/app/src/main/java/cy/agorise/crystalwallet/activities/PinRequestActivity.java
@@ -7,21 +7,16 @@ import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
-import android.widget.Button;
import android.widget.EditText;
-import android.widget.TextView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
-import butterknife.OnClick;
import butterknife.OnTextChanged;
import cy.agorise.crystalwallet.R;
-import cy.agorise.crystalwallet.models.AccountSeed;
import cy.agorise.crystalwallet.models.GeneralSetting;
import cy.agorise.crystalwallet.util.PasswordManager;
-import cy.agorise.crystalwallet.viewmodels.AccountSeedViewModel;
import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel;
public class PinRequestActivity extends AppCompatActivity {
diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/PinSecurityFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/PinSecurityFragment.java
index edfaea9..c5d298c 100644
--- a/app/src/main/java/cy/agorise/crystalwallet/fragments/PinSecurityFragment.java
+++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/PinSecurityFragment.java
@@ -1,16 +1,13 @@
package cy.agorise.crystalwallet.fragments;
import android.arch.lifecycle.LiveData;
-import android.arch.lifecycle.Observer;
import android.arch.lifecycle.ViewModelProviders;
import android.os.Bundle;
-import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
@@ -21,9 +18,7 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnTextChanged;
import cy.agorise.crystalwallet.R;
-import cy.agorise.crystalwallet.activities.CreateSeedActivity;
import cy.agorise.crystalwallet.application.CrystalSecurityMonitor;
-import cy.agorise.crystalwallet.dao.CrystalDatabase;
import cy.agorise.crystalwallet.models.GeneralSetting;
import cy.agorise.crystalwallet.util.PasswordManager;
import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel;
diff --git a/app/src/main/java/cy/agorise/crystalwallet/viewmodels/AccountSeedViewModel.java b/app/src/main/java/cy/agorise/crystalwallet/viewmodels/AccountSeedViewModel.java
deleted file mode 100644
index bb546a4..0000000
--- a/app/src/main/java/cy/agorise/crystalwallet/viewmodels/AccountSeedViewModel.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cy.agorise.crystalwallet.viewmodels;
-
-import android.app.Application;
-import android.arch.lifecycle.AndroidViewModel;
-import android.arch.lifecycle.LiveData;
-
-import cy.agorise.crystalwallet.dao.CrystalDatabase;
-import cy.agorise.crystalwallet.models.AccountSeed;
-
-/**
- * Created by Henry Varona on 27/9/2017.
- */
-
-public class AccountSeedViewModel extends AndroidViewModel {
-
- private LiveData accountSeed;
- private CrystalDatabase db;
- private Application app;
-
- public AccountSeedViewModel(Application application) {
- super(application);
- this.db = CrystalDatabase.getAppDatabase(application.getApplicationContext());
- this.app = application;
- }
-
- public void loadSeed(long seedId){
- this.accountSeed = this.db.accountSeedDao().findByIdLiveData(seedId);
- }
-
- public void addSeed(AccountSeed seed){
- long newId = this.db.accountSeedDao().insertAccountSeed(seed);
- seed.setId(newId);
- }
-
- public LiveData getAccountSeed(){
- return this.accountSeed;
- }
-
-}
diff --git a/app/src/main/res/layout/send_transaction.xml b/app/src/main/res/layout/send_transaction.xml
index 168ae41..0dc5811 100644
--- a/app/src/main/res/layout/send_transaction.xml
+++ b/app/src/main/res/layout/send_transaction.xml
@@ -74,6 +74,7 @@
android:inputType="text"
android:textSize="20sp"
android:hint="@string/to_capital"
+ android:maxLength="255"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/gravatar" />