Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
hvarona 2018-10-25 08:10:11 -04:00
commit d456ee49a8
9 changed files with 145 additions and 62 deletions

View file

@ -358,7 +358,7 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
/* /*
* Validate mnemonic with the server * Validate mnemonic with the server
* */ * */
final ImportBitsharesAccountRequest request = new ImportBitsharesAccountRequest(etSeedWords.getText().toString().trim(),activity); /*final ImportBitsharesAccountRequest request = new ImportBitsharesAccountRequest(etSeedWords.getText().toString().trim(),activity);
request.setListener(new CryptoNetInfoRequestListener() { request.setListener(new CryptoNetInfoRequestListener() {
@Override @Override
public void onCarryOut() { public void onCarryOut() {
@ -378,7 +378,7 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
} }
} }
}); });
CryptoNetInfoRequests.getInstance().addRequest(request); CryptoNetInfoRequests.getInstance().addRequest(request);*/
} }
}); });

View file

@ -25,6 +25,7 @@ import butterknife.ButterKnife;
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.application.CrystalSecurityMonitor;
import cy.agorise.crystalwallet.interfaces.OnResponse;
import cy.agorise.crystalwallet.models.GeneralSetting; import cy.agorise.crystalwallet.models.GeneralSetting;
import cy.agorise.crystalwallet.util.PasswordManager; import cy.agorise.crystalwallet.util.PasswordManager;
import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel; import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel;
@ -39,6 +40,11 @@ public class PatternRequestActivity extends AppCompatActivity {
@BindView(R.id.txtBadtry) @BindView(R.id.txtBadtry)
TextView txtBadtry; TextView txtBadtry;
/*
* External listener for success or fail
* */
private static OnResponse onResponse;
/* /*
* Contains the bad tries * Contains the bad tries
* */ * */
@ -67,6 +73,8 @@ public class PatternRequestActivity extends AppCompatActivity {
setContentView(R.layout.activity_pattern_request); setContentView(R.layout.activity_pattern_request);
ButterKnife.bind(this); ButterKnife.bind(this);
//onResponse = null;
GeneralSettingListViewModel generalSettingListViewModel = ViewModelProviders.of(this).get(GeneralSettingListViewModel.class); GeneralSettingListViewModel generalSettingListViewModel = ViewModelProviders.of(this).get(GeneralSettingListViewModel.class);
LiveData<List<GeneralSetting>> generalSettingsLiveData = generalSettingListViewModel.getGeneralSettingList(); LiveData<List<GeneralSetting>> generalSettingsLiveData = generalSettingListViewModel.getGeneralSettingList();
@ -100,11 +108,24 @@ public class PatternRequestActivity extends AppCompatActivity {
if (CrystalSecurityMonitor.getInstance(null).is2ndFactorSet()) { if (CrystalSecurityMonitor.getInstance(null).is2ndFactorSet()) {
//CrystalSecurityMonitor.getInstance(null).call2ndFactor(thisActivity); //CrystalSecurityMonitor.getInstance(null).call2ndFactor(thisActivity);
thisActivity.finish(); thisActivity.finish();
if(onResponse != null){
onResponse.onSuccess();
}
} else { } else {
thisActivity.finish(); thisActivity.finish();
if(onResponse != null){
onResponse.onSuccess();
}
} }
} else { } else {
incorrect(); incorrect();
if(onResponse != null){
onResponse.onFailed();
}
} }
} }
@ -122,6 +143,10 @@ public class PatternRequestActivity extends AppCompatActivity {
}); });
} }
public static void setOnResponse(OnResponse onResponse) {
PatternRequestActivity.onResponse = onResponse;
}
private void incorrect(){ private void incorrect(){
/* /*

View file

@ -31,6 +31,7 @@ import cy.agorise.crystalwallet.dialogs.material.DialogMaterial;
import cy.agorise.crystalwallet.dialogs.material.NegativeResponse; import cy.agorise.crystalwallet.dialogs.material.NegativeResponse;
import cy.agorise.crystalwallet.dialogs.material.PositiveResponse; import cy.agorise.crystalwallet.dialogs.material.PositiveResponse;
import cy.agorise.crystalwallet.dialogs.material.QuestionDialog; import cy.agorise.crystalwallet.dialogs.material.QuestionDialog;
import cy.agorise.crystalwallet.interfaces.OnResponse;
import cy.agorise.crystalwallet.models.AccountSeed; import cy.agorise.crystalwallet.models.AccountSeed;
import cy.agorise.crystalwallet.models.GeneralSetting; import cy.agorise.crystalwallet.models.GeneralSetting;
import cy.agorise.crystalwallet.util.PasswordManager; import cy.agorise.crystalwallet.util.PasswordManager;
@ -55,6 +56,10 @@ public class PinRequestActivity extends AppCompatActivity {
* */ * */
private int seconds = 15; private int seconds = 15;
/*
* External listener for success or fail
* */
private static OnResponse onResponse;
@ -72,6 +77,8 @@ public class PinRequestActivity extends AppCompatActivity {
setContentView(R.layout.activity_pin_request); setContentView(R.layout.activity_pin_request);
ButterKnife.bind(this); ButterKnife.bind(this);
//onResponse = null;
/* /*
* Initially the button is disabled till the user type a valid PIN * Initially the button is disabled till the user type a valid PIN
* */ * */
@ -105,8 +112,17 @@ public class PinRequestActivity extends AppCompatActivity {
if (PasswordManager.checkPassword(passwordEncrypted, etPassword.getText().toString())) { if (PasswordManager.checkPassword(passwordEncrypted, etPassword.getText().toString())) {
if (CrystalSecurityMonitor.getInstance(null).is2ndFactorSet()) { if (CrystalSecurityMonitor.getInstance(null).is2ndFactorSet()) {
CrystalSecurityMonitor.getInstance(null).call2ndFactor(this); CrystalSecurityMonitor.getInstance(null).call2ndFactor(this);
if(onResponse != null){
onResponse.onSuccess();
}
} else { } else {
this.finish(); this.finish();
if(onResponse != null){
onResponse.onFailed();
}
} }
} }
else{ else{
@ -205,6 +221,11 @@ public class PinRequestActivity extends AppCompatActivity {
} }
public static void setOnResponse(OnResponse onResponse) {
PinRequestActivity.onResponse = onResponse;
}
@OnTextChanged(value = R.id.etPassword, @OnTextChanged(value = R.id.etPassword,
callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED) callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
void afterPasswordChanged(Editable editable) { void afterPasswordChanged(Editable editable) {

View file

@ -1,5 +1,6 @@
package cy.agorise.crystalwallet.activities; package cy.agorise.crystalwallet.activities;
import android.app.Activity;
import android.arch.lifecycle.LiveData; import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.Observer; import android.arch.lifecycle.Observer;
import android.os.Bundle; import android.os.Bundle;
@ -11,6 +12,7 @@ import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.jaredrummler.materialspinner.MaterialSpinner; import com.jaredrummler.materialspinner.MaterialSpinner;

View file

@ -16,6 +16,8 @@ import java.util.List;
import cy.agorise.crystalwallet.activities.PatternRequestActivity; import cy.agorise.crystalwallet.activities.PatternRequestActivity;
import cy.agorise.crystalwallet.activities.PinRequestActivity; import cy.agorise.crystalwallet.activities.PinRequestActivity;
import cy.agorise.crystalwallet.activities.PocketRequestActivity; import cy.agorise.crystalwallet.activities.PocketRequestActivity;
import cy.agorise.crystalwallet.fragments.PatternSecurityFragment;
import cy.agorise.crystalwallet.interfaces.OnResponse;
import cy.agorise.crystalwallet.models.GeneralSetting; import cy.agorise.crystalwallet.models.GeneralSetting;
import cy.agorise.crystalwallet.notifiers.CrystalWalletNotifier; import cy.agorise.crystalwallet.notifiers.CrystalWalletNotifier;
import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel; import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel;
@ -129,7 +131,7 @@ public class CrystalSecurityMonitor implements Application.ActivityLifecycleCall
public void onActivityStarted(Activity activity) { public void onActivityStarted(Activity activity) {
if (numStarted == 0) { if (numStarted == 0) {
if (!actualSecurity().equals("")){ if (!actualSecurity().equals("")){
callPasswordRequest(activity); callPasswordRequest(activity,null);
} }
} }
numStarted++; numStarted++;
@ -140,18 +142,39 @@ public class CrystalSecurityMonitor implements Application.ActivityLifecycleCall
numStarted--; numStarted--;
if (numStarted == 0) { if (numStarted == 0) {
if (!actualSecurity().equals("")){ if (!actualSecurity().equals("")){
callPasswordRequest(activity); callPasswordRequest(activity,null);
} }
} }
} }
public void callPasswordRequest(Activity activity){ public void callPasswordRequest(Activity activity, final OnResponse onResponsePattern){
if ((!activity.getIntent().hasExtra("ACTIVITY_TYPE")) || (!activity.getIntent().getStringExtra("ACTIVITY_TYPE").equals("PASSWORD_REQUEST"))) { if ((!activity.getIntent().hasExtra("ACTIVITY_TYPE")) || (!activity.getIntent().getStringExtra("ACTIVITY_TYPE").equals("PASSWORD_REQUEST"))) {
Intent intent = null; Intent intent = null;
if ((this.passwordEncrypted != null) && (!this.passwordEncrypted.equals(""))) { if ((this.passwordEncrypted != null) && (!this.passwordEncrypted.equals(""))) {
intent = new Intent(activity, PinRequestActivity.class); intent = new Intent(activity, PinRequestActivity.class);
PinRequestActivity.setOnResponse(null);
/*
* Connect error and success listeners
* */
if(onResponsePattern != null){
PinRequestActivity.setOnResponse(onResponsePattern);
}
} else if ((this.patternEncrypted != null) && (!this.patternEncrypted.equals(""))) { } else if ((this.patternEncrypted != null) && (!this.patternEncrypted.equals(""))) {
intent = new Intent(activity, PatternRequestActivity.class); intent = new Intent(activity, PatternRequestActivity.class);
PatternRequestActivity.setOnResponse(null);
/*
* Connect error and success listeners
* */
if(onResponsePattern != null){
PatternRequestActivity.setOnResponse(onResponsePattern);
}
} }
if (intent != null) { if (intent != null) {
intent.putExtra("ACTIVITY_TYPE", "PASSWORD_REQUEST"); intent.putExtra("ACTIVITY_TYPE", "PASSWORD_REQUEST");

View file

@ -1,5 +1,6 @@
package cy.agorise.crystalwallet.fragments; package cy.agorise.crystalwallet.fragments;
import android.app.Activity;
import android.arch.lifecycle.LiveData; import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.Observer; import android.arch.lifecycle.Observer;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
@ -8,6 +9,7 @@ import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.text.Editable; import android.text.Editable;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -27,7 +29,10 @@ import butterknife.ButterKnife;
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.application.CrystalSecurityMonitor;
import cy.agorise.crystalwallet.dialogs.material.CrystalDialog;
import cy.agorise.crystalwallet.interfaces.OnResponse;
import cy.agorise.crystalwallet.models.GeneralSetting; import cy.agorise.crystalwallet.models.GeneralSetting;
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests;
import cy.agorise.crystalwallet.util.ChildViewPager; import cy.agorise.crystalwallet.util.ChildViewPager;
import cy.agorise.crystalwallet.util.PasswordManager; import cy.agorise.crystalwallet.util.PasswordManager;
import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel; import cy.agorise.crystalwallet.viewmodels.GeneralSettingListViewModel;
@ -199,7 +204,20 @@ public class PatternSecurityFragment extends Fragment {
public void savePattern(String pattern){ public void savePattern(String pattern){
String patternEncripted = PasswordManager.encriptPassword(pattern); String patternEncripted = PasswordManager.encriptPassword(pattern);
CrystalSecurityMonitor.getInstance(null).setPatternEncrypted(patternEncripted); CrystalSecurityMonitor.getInstance(null).setPatternEncrypted(patternEncripted);
//CrystalSecurityMonitor.getInstance(null).callPasswordRequest(this.getActivity()); /*CrystalSecurityMonitor.getInstance(null).callPasswordRequest(this.getActivity(), new OnResponse() {
@Override
public void onSuccess() {
Log.i("onSuccess","onSuccess");
Toast.makeText(getActivity(), "onSuccess", Toast.LENGTH_LONG).show();
}
@Override
public void onFailed() {
Log.i("onFailed","onFailed");
Toast.makeText(getActivity(), "onFailed", Toast.LENGTH_LONG).show();
}
});*/
/* /*
* Show success * Show success

View file

@ -58,8 +58,10 @@ import butterknife.OnClick;
import butterknife.OnItemSelected; import butterknife.OnItemSelected;
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.CrystalDialog; import cy.agorise.crystalwallet.dialogs.material.CrystalDialog;
import cy.agorise.crystalwallet.dialogs.material.ToastIt; import cy.agorise.crystalwallet.dialogs.material.ToastIt;
import cy.agorise.crystalwallet.interfaces.OnResponse;
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestListener; import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestListener;
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests; import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests;
import cy.agorise.crystalwallet.requestmanagers.ValidateBitsharesSendRequest; import cy.agorise.crystalwallet.requestmanagers.ValidateBitsharesSendRequest;
@ -180,53 +182,10 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
View view = inflater.inflate(R.layout.send_transaction, null); View view = inflater.inflate(R.layout.send_transaction, null);
ButterKnife.bind(this, view); ButterKnife.bind(this, view);
/*
* Detet scroll changes
* */
/*scrollMain.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
View view = scrollMain.getChildAt(scrollMain.getChildCount() - 1);
int diff = (view.getBottom() - (scrollMain.getHeight() + scrollMain.getScrollY()));
float traslationY = btnSend.getTranslationY();
if(diff<=266 && diff>128){
//btnSend.setTranslationY(0);
//viewSend.setTranslationY(0);
btnSend.animate().y(880);
viewSend.animate().y(800);
}
else if(diff<=128 && diff>10){
//btnSend.setTranslationY(-130);
//viewSend.setTranslationY(-130);
btnSend.animate().y(880);
viewSend.animate().y(800);
}
else if(diff<=10 && diff>0){
//btnSend.setTranslationY(-170);
//viewSend.setTranslationY(-170);
btnSend.animate().y(680);
viewSend.animate().y(600);
}
else if(diff==0){
//btnSend.setTranslationY(-190);
//viewSend.setTranslationY(-190);
btnSend.animate().y(680);
viewSend.animate().y(600);
}
}
});*/
this.cryptoNetAccountId = getArguments().getLong("CRYPTO_NET_ACCOUNT_ID",-1); this.cryptoNetAccountId = getArguments().getLong("CRYPTO_NET_ACCOUNT_ID",-1);
final Activity activity = getActivity();
/* /*
* Add style to the spinner android * Add style to the spinner android
* */ * */
@ -253,6 +212,15 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
} }
List<CryptoCurrency> cryptoCurrencyList = db.cryptoCurrencyDao().getByIds(assetIds); List<CryptoCurrency> cryptoCurrencyList = db.cryptoCurrencyDao().getByIds(assetIds);
/*
* Test
* */
/*CryptoCurrency crypto1 = new CryptoCurrency();
crypto1.setId(1);
crypto1.setName("BITCOIN");
crypto1.setPrecision(1);
cryptoCurrencyList.add(crypto1);*/
assetAdapter = new CryptoCurrencyAdapter(getContext(), android.R.layout.simple_spinner_item, cryptoCurrencyList); assetAdapter = new CryptoCurrencyAdapter(getContext(), android.R.layout.simple_spinner_item, cryptoCurrencyList);
spAsset.setAdapter(assetAdapter); spAsset.setAdapter(assetAdapter);
} }
@ -652,6 +620,13 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
} }
}); });
/*
* If exists mode scurity show it and valide events in case of success or fail
* */
CrystalSecurityMonitor.getInstance(null).callPasswordRequest(this.getActivity(), new OnResponse() {
@Override
public void onSuccess() {
/* /*
* Show loading dialog * Show loading dialog
* */ * */
@ -662,6 +637,13 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
CryptoNetInfoRequests.getInstance().addRequest(sendRequest); CryptoNetInfoRequests.getInstance().addRequest(sendRequest);
} }
@Override
public void onFailed() {
}
});
}
} }
public void beginScanQrCode(){ public void beginScanQrCode(){

View file

@ -31,10 +31,17 @@ public class GrapheneAccount extends CryptoNetAccount {
} }
public void loadInfo(GrapheneAccountInfo info){ public void loadInfo(GrapheneAccountInfo info){
if(info != null){
this.name = info.getName(); this.name = info.getName();
this.accountId = info.getAccountId(); this.accountId = info.getAccountId();
this.upgradedToLtm = info.getUpgradedToLtm(); this.upgradedToLtm = info.getUpgradedToLtm();
} }
else{
this.name = "";
this.accountId = "-1";
this.upgradedToLtm = false;
}
}
public String getName() { public String getName() {
return name; return name;

View file

@ -48,7 +48,12 @@ public class AmountValidationField extends ValidationField {
CryptoCoinBalance balance = CrystalDatabase.getAppDatabase(amountField.getContext()).cryptoCoinBalanceDao().getBalanceFromAccount(this.account.getId(),cryptoCurrency.getId()); CryptoCoinBalance balance = CrystalDatabase.getAppDatabase(amountField.getContext()).cryptoCoinBalanceDao().getBalanceFromAccount(this.account.getId(),cryptoCurrency.getId());
if (newAmountValue > balance.getBalance()){ double balanceDouble = 0;
if(balance != null){
balanceDouble = balance.getBalance();
}
if (newAmountValue > balanceDouble){
setMessageForValue(mixedValues, validator.getContext().getResources().getString(R.string.insufficient_amount)); setMessageForValue(mixedValues, validator.getContext().getResources().getString(R.string.insufficient_amount));
setValidForValue(mixedValues, false); setValidForValue(mixedValues, false);
} else if (newAmountValue == 0){ } else if (newAmountValue == 0){