diff --git a/app/build.gradle b/app/build.gradle
index 4dd5c06c92..894ce87f55 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -58,20 +58,16 @@ dependencies {
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
- implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
implementation 'com.skyfishjy.ripplebackground:library:1.0.1'
+ implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
+ implementation 'com.google.dagger:dagger:2.16'
+ annotationProcessor 'com.google.dagger:dagger-compiler:2.16'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- implementation 'org.bitcoinj:bitcoinj-parent:0.14.4'
- implementation 'org.bitcoinj:bitcoinj-core:0.14.4'
+ implementation 'org.bitcoinj:bitcoinj-parent:0.14.7'
+ implementation 'org.bitcoinj:bitcoinj-core:0.14.7'
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
implementation 'info.hoang8f:android-segmented:1.0.6'
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'io.reactivex.rxjava2:rxkotlin:2.3.0'
-
- implementation 'com.google.dagger:dagger:2.16'
- annotationProcessor 'com.google.dagger:dagger-compiler:2.16'
-// implementation 'com.google.dagger:dagger-android:2.16'
-// implementation 'com.google.dagger:dagger-android-support:2.16' // if you use the support libraries
-// annotationProcessor 'com.google.dagger:dagger-android-processor:2.16'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 330db2e0da..b2cea5d8f7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -135,7 +135,7 @@
android:theme="@style/AppTheme.NoActionBar" />
diff --git a/app/src/main/java/com/tangem/App.java b/app/src/main/java/com/tangem/App.java
index d043098cd9..b63bdafa7e 100644
--- a/app/src/main/java/com/tangem/App.java
+++ b/app/src/main/java/com/tangem/App.java
@@ -3,7 +3,9 @@ package com.tangem;
import android.app.Application;
import android.support.v7.app.AppCompatDelegate;
+import com.tangem.di.DaggerNavigatorComponent;
import com.tangem.di.DaggerNetworkComponent;
+import com.tangem.di.NavigatorComponent;
import com.tangem.di.NetworkComponent;
public class App extends Application {
@@ -22,6 +24,11 @@ public class App extends Application {
}
private static NetworkComponent networkComponent;
+ private static NavigatorComponent navigatorComponent;
+
+ public static NavigatorComponent getNavigatorComponent() {
+ return navigatorComponent;
+ }
@Override
public void onCreate() {
@@ -30,6 +37,7 @@ public class App extends Application {
sInstance = this;
networkComponent = DaggerNetworkComponent.create();
+ navigatorComponent = buildNavigatorComponent();
}
/**
@@ -43,4 +51,9 @@ public class App extends Application {
return networkComponent;
}
+ protected NavigatorComponent buildNavigatorComponent() {
+ return DaggerNavigatorComponent.builder()
+ .build();
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/data/LogFileProvider.java b/app/src/main/java/com/tangem/data/LogFileProvider.java
index 0a306387a9..be8a46d5a7 100644
--- a/app/src/main/java/com/tangem/data/LogFileProvider.java
+++ b/app/src/main/java/com/tangem/data/LogFileProvider.java
@@ -46,7 +46,7 @@ public class LogFileProvider extends ContentProvider {
public ParcelFileDescriptor openFile(Uri uri, String mode)
throws FileNotFoundException {
- String LOG_TAG = CLASS_NAME+"-oF";
+ String LOG_TAG = CLASS_NAME + "-oF";
Log.v(LOG_TAG,
"Called with uri: '" + uri + "'." + uri.getLastPathSegment());
diff --git a/app/src/main/java/com/tangem/domain/wallet/Logger.java b/app/src/main/java/com/tangem/data/Logger.java
similarity index 99%
rename from app/src/main/java/com/tangem/domain/wallet/Logger.java
rename to app/src/main/java/com/tangem/data/Logger.java
index 1925c17d52..e556515577 100644
--- a/app/src/main/java/com/tangem/domain/wallet/Logger.java
+++ b/app/src/main/java/com/tangem/data/Logger.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet;
+package com.tangem.data;
import android.content.Context;
import android.util.Log;
diff --git a/app/src/main/java/com/tangem/domain/wallet/LocalStorage.kt b/app/src/main/java/com/tangem/data/db/LocalStorage.kt
similarity index 99%
rename from app/src/main/java/com/tangem/domain/wallet/LocalStorage.kt
rename to app/src/main/java/com/tangem/data/db/LocalStorage.kt
index 82a26096d5..b0df8cadb9 100644
--- a/app/src/main/java/com/tangem/domain/wallet/LocalStorage.kt
+++ b/app/src/main/java/com/tangem/data/db/LocalStorage.kt
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet
+package com.tangem.data.db
import android.annotation.SuppressLint
import android.content.Context
@@ -12,6 +12,7 @@ import com.google.gson.annotations.SerializedName
import com.google.gson.reflect.TypeToken
import com.tangem.data.network.model.CardVerifyAndGetInfo
import com.tangem.domain.cardReader.CardCrypto
+import com.tangem.domain.wallet.TangemCard
import com.tangem.util.Util
import com.tangem.wallet.R
import java.io.InputStream
diff --git a/app/src/main/java/com/tangem/domain/wallet/PINStorage.java b/app/src/main/java/com/tangem/data/db/PINStorage.java
similarity index 94%
rename from app/src/main/java/com/tangem/domain/wallet/PINStorage.java
rename to app/src/main/java/com/tangem/data/db/PINStorage.java
index 46c34b37cd..96b5866c91 100644
--- a/app/src/main/java/com/tangem/domain/wallet/PINStorage.java
+++ b/app/src/main/java/com/tangem/data/db/PINStorage.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet;
+package com.tangem.data.db;
import android.content.Context;
import android.content.SharedPreferences;
@@ -66,7 +66,7 @@ public class PINStorage {
public static void deletePIN() {
SharedPreferences.Editor editor = sharedPreferences.edit();
- if (mSavedPIN != null && mLastUsedPIN != null && mSavedPIN.equals(mLastUsedPIN)) {
+ if (mSavedPIN != null && mSavedPIN.equals(mLastUsedPIN)) {
mLastUsedPIN = null;
}
mSavedPIN = null;
@@ -118,7 +118,7 @@ public class PINStorage {
}
public static void deleteEncryptedPIN() {
- if (mEncryptedPIN != null && mLastUsedPIN != null && mEncryptedPIN.equals(mLastUsedPIN)) {
+ if (mEncryptedPIN != null && mEncryptedPIN.equals(mLastUsedPIN)) {
mLastUsedPIN = null;
}
mEncryptedPIN = null;
@@ -149,13 +149,11 @@ public class PINStorage {
public static byte[] loadEncryptedIV2() {
String sIV = sharedPreferences.getString("EncryptedIV2", "");
// Log.d("PINStorage", String.format("loadEncryptedIV: %s",sIV));
-
return Base64.decode(sIV, Base64.NO_WRAP);
}
public static String loadEncryptedPIN2(Cipher cipher) {
String encryptedPIN = sharedPreferences.getString("EncryptedPIN2", null);
-
try {
byte[] bytes = Base64.decode(encryptedPIN, Base64.NO_WRAP);
mPIN2 = new String(cipher.doFinal(bytes));
@@ -184,11 +182,11 @@ public class PINStorage {
}
public static boolean isDefaultPIN(String pin) {
- return (pin != null) && (CardProtocol.DefaultPIN.equals(pin));
+ return (CardProtocol.DefaultPIN.equals(pin));
}
public static boolean isDefaultPIN2(String pin2) {
- return (pin2 != null) && (CardProtocol.DefaultPIN2.equals(pin2));
+ return (CardProtocol.DefaultPIN2.equals(pin2));
}
public static String getDefaultPIN() {
diff --git a/app/src/main/java/com/tangem/data/network/task/save_pin/ConfirmWithFingerprintTask.java b/app/src/main/java/com/tangem/data/fingerprint/ConfirmWithFingerprintTask.java
similarity index 94%
rename from app/src/main/java/com/tangem/data/network/task/save_pin/ConfirmWithFingerprintTask.java
rename to app/src/main/java/com/tangem/data/fingerprint/ConfirmWithFingerprintTask.java
index f147050c3b..9e1e6d5788 100644
--- a/app/src/main/java/com/tangem/data/network/task/save_pin/ConfirmWithFingerprintTask.java
+++ b/app/src/main/java/com/tangem/data/fingerprint/ConfirmWithFingerprintTask.java
@@ -1,9 +1,8 @@
-package com.tangem.data.network.task.save_pin;
+package com.tangem.data.fingerprint;
import android.os.AsyncTask;
import android.widget.Toast;
-import com.tangem.domain.wallet.FingerprintHelper;
import com.tangem.presentation.activity.PinSaveActivity;
import com.tangem.wallet.R;
diff --git a/app/src/main/java/com/tangem/domain/wallet/FingerprintHelper.java b/app/src/main/java/com/tangem/data/fingerprint/FingerprintHelper.java
similarity index 98%
rename from app/src/main/java/com/tangem/domain/wallet/FingerprintHelper.java
rename to app/src/main/java/com/tangem/data/fingerprint/FingerprintHelper.java
index 438e6b833a..3f36830d2d 100644
--- a/app/src/main/java/com/tangem/domain/wallet/FingerprintHelper.java
+++ b/app/src/main/java/com/tangem/data/fingerprint/FingerprintHelper.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet;
+package com.tangem.data.fingerprint;
import android.annotation.TargetApi;
import android.hardware.fingerprint.FingerprintManager;
diff --git a/app/src/main/java/com/tangem/data/network/task/request_pin/StartFingerprintReaderTask.java b/app/src/main/java/com/tangem/data/fingerprint/StartFingerprintReaderTask.java
similarity index 97%
rename from app/src/main/java/com/tangem/data/network/task/request_pin/StartFingerprintReaderTask.java
rename to app/src/main/java/com/tangem/data/fingerprint/StartFingerprintReaderTask.java
index 977a50176e..74de89e542 100644
--- a/app/src/main/java/com/tangem/data/network/task/request_pin/StartFingerprintReaderTask.java
+++ b/app/src/main/java/com/tangem/data/fingerprint/StartFingerprintReaderTask.java
@@ -1,4 +1,4 @@
-package com.tangem.data.network.task.request_pin;
+package com.tangem.data.fingerprint;
import android.annotation.TargetApi;
import android.hardware.fingerprint.FingerprintManager;
@@ -8,8 +8,7 @@ import android.security.keystore.KeyGenParameterSpec;
import android.security.keystore.KeyPermanentlyInvalidatedException;
import android.security.keystore.KeyProperties;
-import com.tangem.domain.wallet.FingerprintHelper;
-import com.tangem.domain.wallet.PINStorage;
+import com.tangem.data.db.PINStorage;
import com.tangem.presentation.activity.PinRequestActivity;
import java.io.IOException;
diff --git a/app/src/main/java/com/tangem/data/network/Cryptonit_OtherAPI.java b/app/src/main/java/com/tangem/data/network/CryptonitOtherApi.java
similarity index 98%
rename from app/src/main/java/com/tangem/data/network/Cryptonit_OtherAPI.java
rename to app/src/main/java/com/tangem/data/network/CryptonitOtherApi.java
index 0124f4d431..772da733a8 100644
--- a/app/src/main/java/com/tangem/data/network/Cryptonit_OtherAPI.java
+++ b/app/src/main/java/com/tangem/data/network/CryptonitOtherApi.java
@@ -37,9 +37,9 @@ import retrofit2.http.Path;
/**
* HTTP
- * Used in Cryptonit_OtherAPI service
+ * Used in CryptonitOtherApi service
*/
-public class Cryptonit_OtherAPI {
+public class CryptonitOtherApi {
private static final String SERVER_URL = "https://api.cryptonit.net/api/";
private static class Method {
@@ -115,7 +115,7 @@ public class Cryptonit_OtherAPI {
private ErrorListener errorListener;
private Context context;
- public Cryptonit_OtherAPI(Context context) {
+ public CryptonitOtherApi(Context context) {
this.context = context;
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
key = sp.getString(context.getResources().getString(R.string.key_cryptonit_key), "");
diff --git a/app/src/main/java/com/tangem/data/network/ServerApiHelper.java b/app/src/main/java/com/tangem/data/network/ServerApiCommon.java
similarity index 73%
rename from app/src/main/java/com/tangem/data/network/ServerApiHelper.java
rename to app/src/main/java/com/tangem/data/network/ServerApiCommon.java
index 02eaf41fa6..50b790ad84 100644
--- a/app/src/main/java/com/tangem/data/network/ServerApiHelper.java
+++ b/app/src/main/java/com/tangem/data/network/ServerApiCommon.java
@@ -6,8 +6,6 @@ import android.util.Log;
import com.tangem.App;
import com.tangem.data.network.model.CardVerifyAndGetInfo;
-import com.tangem.data.network.model.InfuraBody;
-import com.tangem.data.network.model.InfuraResponse;
import com.tangem.data.network.model.RateInfoResponse;
import com.tangem.domain.wallet.TangemCard;
import com.tangem.util.Util;
@@ -24,8 +22,8 @@ import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
-public class ServerApiHelper {
- private static String TAG = ServerApiHelper.class.getSimpleName();
+public class ServerApiCommon {
+ private static String TAG = ServerApiCommon.class.getSimpleName();
/**
* HTTP
@@ -85,84 +83,6 @@ public class ServerApiHelper {
});
}
- /**
- * HTTP
- * Infura
- *
- * eth_getBalance
- * eth_getTransactionCount
- * eth_call
- * eth_sendRawTransaction
- * eth_gasPrice
- */
- public static final String INFURA_ETH_GET_BALANCE = "eth_getBalance";
- public static final String INFURA_ETH_GET_TRANSACTION_COUNT = "eth_getTransactionCount";
- public static final String INFURA_ETH_GET_PENDING_COUNT = "eth_getPendingCount";
- public static final String INFURA_ETH_CALL = "eth_call";
- public static final String INFURA_ETH_SEND_RAW_TRANSACTION = "eth_sendRawTransaction";
- public static final String INFURA_ETH_GAS_PRICE = "eth_gasPrice";
-
- private InfuraBodyListener infuraBodyListener;
-
- public interface InfuraBodyListener {
- void onSuccess(String method, InfuraResponse infuraResponse);
- void onFail(String method, String message);
- }
-
- public void setInfuraResponse(InfuraBodyListener listener) {
- infuraBodyListener = listener;
- }
-
- public void infura(String method, int id, String wallet, String contract, String tx) {
- InfuraApi infuraApi = App.getNetworkComponent().getRetrofitInfura().create(InfuraApi.class);
-
- InfuraBody infuraBody;
- switch (method) {
- case INFURA_ETH_GET_BALANCE:
- case INFURA_ETH_GET_TRANSACTION_COUNT:
- infuraBody = new InfuraBody(method, new String[]{wallet, "latest"}, id);
- break;
- case INFURA_ETH_GET_PENDING_COUNT:
- infuraBody = new InfuraBody(INFURA_ETH_GET_TRANSACTION_COUNT, new String[]{wallet, "pending"}, id);
- break;
- case INFURA_ETH_CALL:
- String address = wallet.substring(2);
- infuraBody = new InfuraBody(method, new Object[]{new InfuraBody.EthCallParams("0x70a08231000000000000000000000000" + address, contract), "latest"}, id);
- break;
-
- case INFURA_ETH_SEND_RAW_TRANSACTION:
- infuraBody = new InfuraBody(method, new String[]{tx}, id);
- break;
-
- case INFURA_ETH_GAS_PRICE:
- infuraBody = new InfuraBody(method, id);
- break;
-
- default:
- infuraBody = new InfuraBody();
- }
-
- Call call = infuraApi.infura(infuraBody);
- call.enqueue(new Callback() {
- @Override
- public void onResponse(@NonNull Call call, @NonNull Response response) {
- if (response.code() == 200) {
- infuraBodyListener.onSuccess(method, response.body());
- Log.i(TAG, "infura " + method + " onResponse " + response.code());
- } else {
- infuraBodyListener.onFail(method, String.valueOf(response.code()));
- Log.e(TAG, "infura " + method + " onResponse " + response.code());
- }
- }
-
- @Override
- public void onFailure(@NonNull Call call, @NonNull Throwable t) {
- infuraBodyListener.onFail(method, String.valueOf(t.getMessage()));
- Log.e(TAG, "infura " + method + " onFailure " + t.getMessage());
- }
- });
- }
-
/**
* HTTP
* Card verify
diff --git a/app/src/main/java/com/tangem/data/network/ServerApiHelperElectrum.java b/app/src/main/java/com/tangem/data/network/ServerApiElectrum.java
similarity index 91%
rename from app/src/main/java/com/tangem/data/network/ServerApiHelperElectrum.java
rename to app/src/main/java/com/tangem/data/network/ServerApiElectrum.java
index 1282b0cd5f..bb227b8b69 100644
--- a/app/src/main/java/com/tangem/data/network/ServerApiHelperElectrum.java
+++ b/app/src/main/java/com/tangem/data/network/ServerApiElectrum.java
@@ -3,9 +3,10 @@ package com.tangem.data.network;
import android.util.Log;
import com.tangem.App;
-import com.tangem.domain.BitcoinNode;
-import com.tangem.domain.BitcoinNodeTestNet;
-import com.tangem.domain.BitcoinCashNode;
+import com.tangem.domain.wallet.btc.BitcoinNode;
+import com.tangem.domain.wallet.btc.BitcoinNodeSsl;
+import com.tangem.domain.wallet.btc.BitcoinNodeTestNet;
+import com.tangem.domain.wallet.bch.BitcoinCashNode;
import com.tangem.domain.wallet.Blockchain;
import com.tangem.domain.wallet.TangemCard;
@@ -27,8 +28,6 @@ import java.util.Random;
import javax.net.SocketFactory;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLHandshakeException;
-import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
@@ -38,9 +37,8 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.observers.DefaultObserver;
import io.reactivex.schedulers.Schedulers;
-public class ServerApiHelperElectrum {
- // private static String TAG = ServerApiHelper.class.getSimpleName();
- private static String TAG = ServerApiHelperElectrum.class.getSimpleName();
+public class ServerApiElectrum {
+ private static String TAG = ServerApiElectrum.class.getSimpleName();
/**
* TCP
@@ -108,6 +106,11 @@ public class ServerApiHelperElectrum {
}
private List testSslSocket(TangemCard card, ElectrumRequest electrumRequest) {
+ BitcoinNodeSsl bitcoinNodeSsl = BitcoinNodeSsl.values()[new Random().nextInt(BitcoinNodeSsl.values().length)];
+
+ this.host = bitcoinNodeSsl.getHost();
+ this.port = bitcoinNodeSsl.getPort();
+
SocketFactory sf = SSLSocketFactory.getDefault();
SSLSocket socket;
@@ -115,8 +118,9 @@ public class ServerApiHelperElectrum {
Collections.addAll(result, electrumRequest);
try {
-// socket = (SSLSocket) sf.createSocket("gmail.com", 443);
- socket = (SSLSocket) sf.createSocket("electrum.hsmiths.com", 50002);
+ socket = (SSLSocket) sf.createSocket("gmail.com", 443);
+// socket = (SSLSocket) sf.createSocket("electrum.hsmiths.com", 50002);
+// socket = (SSLSocket) sf.createSocket(host, port);
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
SSLSession s = socket.getSession();
@@ -124,7 +128,7 @@ public class ServerApiHelperElectrum {
// throw new SSLHandshakeException("Expected mail.google.com, found " + s.getPeerPrincipal());
// }
-
+ Log.i(TAG, host + " " + port);
try {
OutputStream os = socket.getOutputStream();
OutputStreamWriter out = new OutputStreamWriter(os, "UTF-8");
diff --git a/app/src/main/java/com/tangem/data/network/ServerApiInfura.java b/app/src/main/java/com/tangem/data/network/ServerApiInfura.java
new file mode 100644
index 0000000000..fb8e407099
--- /dev/null
+++ b/app/src/main/java/com/tangem/data/network/ServerApiInfura.java
@@ -0,0 +1,96 @@
+package com.tangem.data.network;
+
+import android.support.annotation.NonNull;
+import android.util.Log;
+
+import com.tangem.App;
+import com.tangem.data.network.model.InfuraBody;
+import com.tangem.data.network.model.InfuraResponse;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class ServerApiInfura {
+ private static String TAG = ServerApiInfura.class.getSimpleName();
+
+ /**
+ * HTTP
+ * Infura
+ *
+ * eth_getBalance
+ * eth_getTransactionCount
+ * eth_call
+ * eth_sendRawTransaction
+ * eth_gasPrice
+ */
+ public static final String INFURA_ETH_GET_BALANCE = "eth_getBalance";
+ public static final String INFURA_ETH_GET_TRANSACTION_COUNT = "eth_getTransactionCount";
+ public static final String INFURA_ETH_GET_PENDING_COUNT = "eth_getPendingCount";
+ public static final String INFURA_ETH_CALL = "eth_call";
+ public static final String INFURA_ETH_SEND_RAW_TRANSACTION = "eth_sendRawTransaction";
+ public static final String INFURA_ETH_GAS_PRICE = "eth_gasPrice";
+
+ private InfuraBodyListener infuraBodyListener;
+
+ public interface InfuraBodyListener {
+ void onSuccess(String method, InfuraResponse infuraResponse);
+
+ void onFail(String method, String message);
+ }
+
+ public void setInfuraResponse(InfuraBodyListener listener) {
+ infuraBodyListener = listener;
+ }
+
+ public void infura(String method, int id, String wallet, String contract, String tx) {
+ InfuraApi infuraApi = App.getNetworkComponent().getRetrofitInfura().create(InfuraApi.class);
+
+ InfuraBody infuraBody;
+ switch (method) {
+ case INFURA_ETH_GET_BALANCE:
+ case INFURA_ETH_GET_TRANSACTION_COUNT:
+ infuraBody = new InfuraBody(method, new String[]{wallet, "latest"}, id);
+ break;
+ case INFURA_ETH_GET_PENDING_COUNT:
+ infuraBody = new InfuraBody(INFURA_ETH_GET_TRANSACTION_COUNT, new String[]{wallet, "pending"}, id);
+ break;
+ case INFURA_ETH_CALL:
+ String address = wallet.substring(2);
+ infuraBody = new InfuraBody(method, new Object[]{new InfuraBody.EthCallParams("0x70a08231000000000000000000000000" + address, contract), "latest"}, id);
+ break;
+
+ case INFURA_ETH_SEND_RAW_TRANSACTION:
+ infuraBody = new InfuraBody(method, new String[]{tx}, id);
+ break;
+
+ case INFURA_ETH_GAS_PRICE:
+ infuraBody = new InfuraBody(method, id);
+ break;
+
+ default:
+ infuraBody = new InfuraBody();
+ }
+
+ Call call = infuraApi.infura(infuraBody);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(@NonNull Call call, @NonNull Response response) {
+ if (response.code() == 200) {
+ infuraBodyListener.onSuccess(method, response.body());
+ Log.i(TAG, "infura " + method + " onResponse " + response.code());
+ } else {
+ infuraBodyListener.onFail(method, String.valueOf(response.code()));
+ Log.e(TAG, "infura " + method + " onResponse " + response.code());
+ }
+ }
+
+ @Override
+ public void onFailure(@NonNull Call call, @NonNull Throwable t) {
+ infuraBodyListener.onFail(method, String.valueOf(t.getMessage()));
+ Log.e(TAG, "infura " + method + " onFailure " + t.getMessage());
+ }
+ });
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/data/network/exception/Failure.kt b/app/src/main/java/com/tangem/data/network/exception/Failure.kt
index f6b9deaa4c..f2fbb19c5b 100644
--- a/app/src/main/java/com/tangem/data/network/exception/Failure.kt
+++ b/app/src/main/java/com/tangem/data/network/exception/Failure.kt
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.dmmatrix.epro.core.exception
+package com.tangem.data.network.exception
/**
* Base Class for handling errors/failures/exceptions.
diff --git a/app/src/main/java/com/tangem/data/nfc/CreateNewWalletTask.java b/app/src/main/java/com/tangem/data/nfc/CreateNewWalletTask.java
index 1dec984a3f..bdce5f6241 100644
--- a/app/src/main/java/com/tangem/data/nfc/CreateNewWalletTask.java
+++ b/app/src/main/java/com/tangem/data/nfc/CreateNewWalletTask.java
@@ -6,7 +6,7 @@ import android.util.Log;
import com.tangem.domain.cardReader.CardProtocol;
import com.tangem.domain.cardReader.NfcManager;
-import com.tangem.domain.wallet.PINStorage;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.wallet.TangemCard;
public class CreateNewWalletTask extends Thread {
diff --git a/app/src/main/java/com/tangem/domain/wallet/DeviceNFCAntennaLocation.kt b/app/src/main/java/com/tangem/data/nfc/DeviceNFCAntennaLocation.kt
similarity index 93%
rename from app/src/main/java/com/tangem/domain/wallet/DeviceNFCAntennaLocation.kt
rename to app/src/main/java/com/tangem/data/nfc/DeviceNFCAntennaLocation.kt
index 733625e683..8f6426d961 100644
--- a/app/src/main/java/com/tangem/domain/wallet/DeviceNFCAntennaLocation.kt
+++ b/app/src/main/java/com/tangem/data/nfc/DeviceNFCAntennaLocation.kt
@@ -1,7 +1,6 @@
-package com.tangem.domain.wallet
+package com.tangem.data.nfc
import android.os.Build
-import com.tangem.data.NFCLocation
class DeviceNFCAntennaLocation {
companion object {
diff --git a/app/src/main/java/com/tangem/data/NFCLocation.kt b/app/src/main/java/com/tangem/data/nfc/NFCLocation.kt
similarity index 99%
rename from app/src/main/java/com/tangem/data/NFCLocation.kt
rename to app/src/main/java/com/tangem/data/nfc/NFCLocation.kt
index 926c228b6f..d89713fe7e 100644
--- a/app/src/main/java/com/tangem/data/NFCLocation.kt
+++ b/app/src/main/java/com/tangem/data/nfc/NFCLocation.kt
@@ -1,4 +1,4 @@
-package com.tangem.data
+package com.tangem.data.nfc
enum class NFCLocation(val codename: String, val fullName: String, val orientation: Int, val x: Int, val y: Int, val z: Int) {
model1("sailfish", "Google Pixel", 0, 65, 25, 0),
diff --git a/app/src/main/java/com/tangem/data/nfc/PurgeTask.java b/app/src/main/java/com/tangem/data/nfc/PurgeTask.java
index 01d24bcb1b..a24c71e24e 100644
--- a/app/src/main/java/com/tangem/data/nfc/PurgeTask.java
+++ b/app/src/main/java/com/tangem/data/nfc/PurgeTask.java
@@ -6,7 +6,7 @@ import android.util.Log;
import com.tangem.domain.cardReader.CardProtocol;
import com.tangem.domain.cardReader.NfcManager;
-import com.tangem.domain.wallet.PINStorage;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.wallet.TangemCard;
public class PurgeTask extends Thread {
diff --git a/app/src/main/java/com/tangem/data/nfc/ReadCardInfoTask.java b/app/src/main/java/com/tangem/data/nfc/ReadCardInfoTask.java
index f0c500ccee..f0fa541df9 100644
--- a/app/src/main/java/com/tangem/data/nfc/ReadCardInfoTask.java
+++ b/app/src/main/java/com/tangem/data/nfc/ReadCardInfoTask.java
@@ -6,7 +6,7 @@ import android.util.Log;
import com.tangem.domain.cardReader.CardProtocol;
import com.tangem.domain.cardReader.NfcManager;
-import com.tangem.domain.wallet.PINStorage;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.wallet.TangemCard;
import com.tangem.util.Util;
diff --git a/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java b/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java
index cfdcce382c..03499bc05f 100644
--- a/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java
+++ b/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java
@@ -13,7 +13,7 @@ import com.tangem.domain.wallet.CoinEngineFactory;
import com.tangem.domain.wallet.TangemContext;
import com.tangem.presentation.activity.SendTransactionActivity;
import com.tangem.presentation.activity.SignPaymentActivity;
-import com.tangem.util.BTCUtils;
+import com.tangem.domain.wallet.BTCUtils;
import java.io.IOException;
@@ -86,7 +86,7 @@ public class SignPaymentTask extends Thread {
// SignBTC_TX(protocol);
// }
- CoinEngine engine = CoinEngineFactory.create(mCtx);
+ CoinEngine engine = CoinEngineFactory.INSTANCE.create(mCtx);
if (engine != null) {
if (mCtx.getCard().getPauseBeforePIN2() > 0) {
mNotifications.onReadWait(mCtx.getCard().getPauseBeforePIN2());
diff --git a/app/src/main/java/com/tangem/data/nfc/SwapPINTask.java b/app/src/main/java/com/tangem/data/nfc/SwapPINTask.java
index a8ecaedfb1..64bf5be55d 100644
--- a/app/src/main/java/com/tangem/data/nfc/SwapPINTask.java
+++ b/app/src/main/java/com/tangem/data/nfc/SwapPINTask.java
@@ -6,7 +6,7 @@ import android.util.Log;
import com.tangem.domain.cardReader.CardProtocol;
import com.tangem.domain.cardReader.NfcManager;
-import com.tangem.domain.wallet.PINStorage;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.wallet.TangemCard;
public class SwapPINTask extends Thread {
diff --git a/app/src/main/java/com/tangem/data/nfc/VerifyCardTask.java b/app/src/main/java/com/tangem/data/nfc/VerifyCardTask.java
index 50c96940b1..2079d605f8 100644
--- a/app/src/main/java/com/tangem/data/nfc/VerifyCardTask.java
+++ b/app/src/main/java/com/tangem/data/nfc/VerifyCardTask.java
@@ -7,7 +7,7 @@ import android.util.Log;
import com.tangem.domain.cardReader.CardProtocol;
import com.tangem.domain.cardReader.FW;
import com.tangem.domain.cardReader.NfcManager;
-import com.tangem.domain.wallet.PINStorage;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.wallet.TangemCard;
import java.util.Arrays;
diff --git a/app/src/main/java/com/tangem/di/AppModule.java b/app/src/main/java/com/tangem/di/AppModule.java
new file mode 100644
index 0000000000..308a52a931
--- /dev/null
+++ b/app/src/main/java/com/tangem/di/AppModule.java
@@ -0,0 +1,21 @@
+package com.tangem.di;
+
+import android.content.Context;
+
+import org.jetbrains.annotations.NotNull;
+
+import javax.inject.Singleton;
+
+@Singleton
+public class AppModule {
+ private Context appContext;
+
+ public AppModule(@NotNull Context context) {
+ appContext = context;
+ }
+
+ Context provideContext() {
+ return appContext;
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/di/Navigator.java b/app/src/main/java/com/tangem/di/Navigator.java
new file mode 100644
index 0000000000..6b9ca4da7d
--- /dev/null
+++ b/app/src/main/java/com/tangem/di/Navigator.java
@@ -0,0 +1,13 @@
+package com.tangem.di;
+
+import android.content.Context;
+
+import com.tangem.presentation.activity.MainActivity;
+
+public class Navigator {
+
+ public void showMain(Context context) {
+ context.startActivity(MainActivity.Companion.callingIntent(context));
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/di/NavigatorComponent.java b/app/src/main/java/com/tangem/di/NavigatorComponent.java
new file mode 100644
index 0000000000..229a1954cb
--- /dev/null
+++ b/app/src/main/java/com/tangem/di/NavigatorComponent.java
@@ -0,0 +1,20 @@
+package com.tangem.di;
+
+import com.tangem.presentation.activity.LogoActivity;
+import com.tangem.presentation.activity.MainActivity;
+
+import javax.inject.Singleton;
+
+import dagger.Component;
+
+@Singleton
+@Component(modules = {
+// AppModule.class,
+ NavigatorModule.class})
+public interface NavigatorComponent {
+
+ void inject(LogoActivity activity);
+
+ void inject(MainActivity activity);
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/di/NavigatorModule.java b/app/src/main/java/com/tangem/di/NavigatorModule.java
new file mode 100644
index 0000000000..94a8dda3d5
--- /dev/null
+++ b/app/src/main/java/com/tangem/di/NavigatorModule.java
@@ -0,0 +1,17 @@
+package com.tangem.di;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+
+@Module
+class NavigatorModule {
+
+ @Singleton
+ @Provides
+ Navigator provideNavigator() {
+ return new Navigator();
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java b/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java
index 00e1b86583..e994dc77e5 100644
--- a/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java
+++ b/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java
@@ -9,7 +9,7 @@ import android.util.Log;
import com.tangem.domain.wallet.CoinEngine;
import com.tangem.domain.wallet.CoinEngineFactory;
import com.tangem.domain.wallet.Issuer;
-import com.tangem.domain.wallet.LocalStorage;
+import com.tangem.data.db.LocalStorage;
import com.tangem.domain.wallet.TangemCard;
import com.tangem.domain.wallet.Manufacturer;
import com.tangem.domain.wallet.TangemContext;
@@ -587,7 +587,7 @@ public class CardProtocol {
TangemContext ctx = new TangemContext(mCard);
try {
- CoinEngine engineCoin = CoinEngineFactory.create(ctx);
+ CoinEngine engineCoin = CoinEngineFactory.INSTANCE.create(ctx);
if( engineCoin==null ) throw new Exception("Can't create CoinEngine!");
String wallet = engineCoin.calculateAddress(pkUncompressed);
mCard.setWallet(wallet);
diff --git a/app/src/main/java/com/tangem/util/BTCUtils.java b/app/src/main/java/com/tangem/domain/wallet/BTCUtils.java
similarity index 86%
rename from app/src/main/java/com/tangem/util/BTCUtils.java
rename to app/src/main/java/com/tangem/domain/wallet/BTCUtils.java
index ce8a71c5df..c32c5bcad9 100644
--- a/app/src/main/java/com/tangem/util/BTCUtils.java
+++ b/app/src/main/java/com/tangem/domain/wallet/BTCUtils.java
@@ -1,4 +1,4 @@
-package com.tangem.util;
+package com.tangem.domain.wallet;
/**
* Created by Ilia on 29.09.2017.
@@ -6,12 +6,12 @@ package com.tangem.util;
import android.util.Log;
-import com.tangem.domain.wallet.Base58;
-import com.tangem.domain.wallet.BitcoinException;
-import com.tangem.domain.wallet.BitcoinOutputStream;
-import com.tangem.domain.wallet.BtcData;
-import com.tangem.domain.wallet.Transaction;
-import com.tangem.domain.wallet.UnspentOutputInfo;
+import com.tangem.domain.wallet.btc.BitcoinException;
+import com.tangem.domain.wallet.btc.BitcoinOutputStream;
+import com.tangem.domain.wallet.btc.BtcData;
+import com.tangem.util.CryptoUtil;
+import com.tangem.util.FormatUtil;
+import com.tangem.util.Util;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -81,34 +81,30 @@ public final class BTCUtils {
forSign.writeInt32(0x01);//write(new byte[]{0x02, 0x00, 0x00, 0x00}); // version
//01
- byte inputCount = (byte)unspentOutputs.size();
+ byte inputCount = (byte) unspentOutputs.size();
forSign.write(inputCount); // input count
//hex str hash prev btc
- for(int i = 0; i < inputCount; ++i)
- {
+ for (int i = 0; i < inputCount; ++i) {
UnspentOutputInfo outPut = unspentOutputs.get(i);
int outputIndex = outPut.outputIndex;
byte[] txHash = BTCUtils.reverse(Util.hexToBytes(outPut.txHashForBuild));//Sha256Hash.hash(rawTxByte);
forSign.write(txHash);
forSign.writeInt32(outputIndex); //output index in prev tx
- if(inputPos ==-1 || i == inputPos)
- {
+ if (inputPos == -1 || i == inputPos) {
// hex str 1976a914....88ac
- forSign.write((byte)outPut.scriptForBuild.length);
+ forSign.write((byte) outPut.scriptForBuild.length);
forSign.write(outPut.scriptForBuild);
- }
- else
- {
+ } else {
forSign.write(0x00);
}
//ffffffff
- forSign.write(new byte[]{(byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff}); // sequence
+ forSign.write(new byte[]{(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff}); // sequence
}
//02
- byte outputCount = (byte)((change==0) ? 1 : 2); // outputCount
+ byte outputCount = (byte) ((change == 0) ? 1 : 2); // outputCount
forSign.write(outputCount);
//8 bytes
@@ -116,15 +112,15 @@ public final class BTCUtils {
forSign.writeInt64(amount); //amount
byte[] sendScript = Transaction.Script.buildOutput(outputAddress).bytes; // build out
//hex str 1976a914....88ac
- forSign.write((byte)sendScript.length);
+ forSign.write((byte) sendScript.length);
forSign.write(sendScript);
- if(change!=0){
+ if (change != 0) {
//8 bytes
forSign.writeInt64(change); // change
//hex str 1976a914....88ac
byte[] chancheScript = Transaction.Script.buildOutput(changeAddress).bytes; //build out
- forSign.write((byte)chancheScript.length);
+ forSign.write((byte) chancheScript.length);
forSign.write(chancheScript);
}
@@ -160,14 +156,14 @@ public final class BTCUtils {
//forSign.write(0x00);
// hex str 1976a914....88ac
- forSign.write((byte)script.length);
+ forSign.write((byte) script.length);
forSign.write(script);
//ffffffff
- forSign.write(new byte[]{(byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff}); // sequence
+ forSign.write(new byte[]{(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff}); // sequence
//02
- byte outputCount = (byte)((change==0) ? 1 : 2); // outputCount
+ byte outputCount = (byte) ((change == 0) ? 1 : 2); // outputCount
forSign.write(outputCount);
//8 bytes
@@ -175,15 +171,15 @@ public final class BTCUtils {
forSign.writeInt64(amount); //amount
byte[] sendScript = Transaction.Script.buildOutput(outputAddress).bytes; // build out
//hex str 1976a914....88ac
- forSign.write((byte)sendScript.length);
+ forSign.write((byte) sendScript.length);
forSign.write(sendScript);
- if(change!=0){
+ if (change != 0) {
//8 bytes
forSign.writeInt64(change); // change
//hex str 1976a914....88ac
byte[] chancheScript = Transaction.Script.buildOutput(changeAddress).bytes; //build out
- forSign.write((byte)chancheScript.length);
+ forSign.write((byte) chancheScript.length);
forSign.write(chancheScript);
}
@@ -200,17 +196,15 @@ public final class BTCUtils {
public static ArrayList getOutputs(List rawTxList, byte[] outputScriptWeAreAbleToSpend) throws BitcoinException {
ArrayList unspentOutputs = new ArrayList<>();
- for(BtcData.UnspentTransaction current: rawTxList)
- {
+ for (BtcData.UnspentTransaction current : rawTxList) {
byte[] rawTxByte = BTCUtils.fromHex(current.Raw);
- if (rawTxByte == null || current.Raw.isEmpty())
- {
+ if (rawTxByte == null || current.Raw.isEmpty()) {
continue;
}
Transaction baseTx = new Transaction(rawTxByte);
- if(baseTx.inputs.length == 0 || baseTx.outputs.length == 0)
+ if (baseTx.inputs.length == 0 || baseTx.outputs.length == 0)
throw new IllegalArgumentException("Unable to decode given transaction");
byte[] txHash = BTCUtils.reverse(CryptoUtil.doubleSha256(rawTxByte));
diff --git a/app/src/main/java/com/tangem/domain/wallet/BalanceValidator.java b/app/src/main/java/com/tangem/domain/wallet/BalanceValidator.java
index d555f5b165..edb0ea6ddc 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BalanceValidator.java
+++ b/app/src/main/java/com/tangem/domain/wallet/BalanceValidator.java
@@ -2,8 +2,6 @@ package com.tangem.domain.wallet;
import com.tangem.wallet.R;
-import java.math.BigInteger;
-
public class BalanceValidator {
private String firstLine;
private String secondLine;
@@ -14,7 +12,7 @@ public class BalanceValidator {
}
public void setFirstLine(String value) {
- firstLine=value;
+ firstLine = value;
}
public String getSecondLine(Boolean recommend) {
@@ -31,7 +29,7 @@ public class BalanceValidator {
}
public void setSecondLine(String value) {
- secondLine=value;
+ secondLine = value;
}
public void setScore(int score) {
@@ -53,10 +51,10 @@ public class BalanceValidator {
public void Check(TangemContext ctx, Boolean attest) {
firstLine = "Verification failed";
secondLine = "";
- TangemCard card=ctx.getCard();
- CoinEngine engine=CoinEngineFactory.create(ctx);
+ TangemCard card = ctx.getCard();
+ CoinEngine engine = CoinEngineFactory.INSTANCE.create(ctx);
- if( !engine.validateBalance(this) ) return;
+ if (!engine.validateBalance(this)) return;
// Verify card?
if (attest) {
@@ -97,6 +95,6 @@ public class BalanceValidator {
secondLine += "Card identity was not verified. Cannot reach Tangem attestation service. ";
}
}
-
}
-}
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/domain/wallet/CoinData.java b/app/src/main/java/com/tangem/domain/wallet/CoinData.java
index b11ccb2108..a96b5dbb74 100644
--- a/app/src/main/java/com/tangem/domain/wallet/CoinData.java
+++ b/app/src/main/java/com/tangem/domain/wallet/CoinData.java
@@ -63,7 +63,7 @@ public abstract class CoinData {
}
public static CoinData fromBundle(Blockchain blockchain, Bundle bundle) {
- CoinEngine engine=CoinEngineFactory.create(blockchain);
+ CoinEngine engine= CoinEngineFactory.INSTANCE.create(blockchain);
if( engine==null ) return null;
CoinData result = engine.createCoinData();
result.loadFromBundle(bundle);
diff --git a/app/src/main/java/com/tangem/domain/wallet/CoinEngineFactory.java b/app/src/main/java/com/tangem/domain/wallet/CoinEngineFactory.java
deleted file mode 100644
index ec23ffefbd..0000000000
--- a/app/src/main/java/com/tangem/domain/wallet/CoinEngineFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.tangem.domain.wallet;
-
-import android.util.Log;
-
-import com.tangem.domain.wallet.BitcoinCash.BtcCashEngine;
-
-/**
- * Created by Ilia on 15.02.2018.
- */
-
-public class CoinEngineFactory {
- public static CoinEngine create(Blockchain blockchain) {
- switch (blockchain) {
- case Bitcoin:
- case BitcoinTestNet:
- return new BtcEngine();
- case BitcoinCash:
- return new BtcCashEngine();
- case Ethereum:
- case EthereumTestNet:
- return new EthEngine();
- case Token:
- return new TokenEngine();
- default:
- return null;
- }
- }
-
- public static CoinEngine create(TangemContext context) {
- CoinEngine result;
- try {
- if (Blockchain.BitcoinCash == context.getBlockchain()) {
- result = new BtcCashEngine(context);
- } else if (Blockchain.Bitcoin == context.getBlockchain() || Blockchain.BitcoinTestNet == context.getBlockchain()) {
- result = new BtcEngine(context);
- } else if (Blockchain.Ethereum == context.getBlockchain() || Blockchain.EthereumTestNet == context.getBlockchain()) {
- result = new EthEngine(context);
- } else if (Blockchain.Token == context.getBlockchain()) {
- result = new TokenEngine(context);
- } else {
- return null;
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- Log.e("CoinEngineFactory","Can't create CoinEngine!");
- result=null;
- }
- return result;
- }
-}
diff --git a/app/src/main/java/com/tangem/domain/wallet/CoinEngineFactory.kt b/app/src/main/java/com/tangem/domain/wallet/CoinEngineFactory.kt
new file mode 100644
index 0000000000..71e8d249a0
--- /dev/null
+++ b/app/src/main/java/com/tangem/domain/wallet/CoinEngineFactory.kt
@@ -0,0 +1,52 @@
+package com.tangem.domain.wallet
+
+import android.util.Log
+
+import com.tangem.domain.wallet.btc.BtcEngine
+import com.tangem.domain.wallet.eth.EthEngine
+import com.tangem.domain.wallet.token.TokenEngine
+import com.tangem.domain.wallet.bch.BtcCashEngine
+
+/**
+ * Factory for create specific engine
+ *
+ * @param Blockchain
+ * @param TangemContext
+ *
+ */
+
+object CoinEngineFactory {
+ private val TAG = CoinEngineFactory::class.java.simpleName
+
+ fun create(blockchain: Blockchain): CoinEngine? {
+ return when (blockchain) {
+ Blockchain.Bitcoin, Blockchain.BitcoinTestNet -> BtcEngine()
+ Blockchain.BitcoinCash -> BtcCashEngine()
+ Blockchain.Ethereum, Blockchain.EthereumTestNet -> EthEngine()
+ Blockchain.Token -> TokenEngine()
+ else -> null
+ }
+ }
+
+ fun create(context: TangemContext): CoinEngine? {
+ var result: CoinEngine?
+ try {
+ result = if (Blockchain.BitcoinCash == context.blockchain)
+ BtcCashEngine(context)
+ else if (Blockchain.Bitcoin == context.blockchain || Blockchain.BitcoinTestNet == context.blockchain)
+ BtcEngine(context)
+ else if (Blockchain.Ethereum == context.blockchain || Blockchain.EthereumTestNet == context.blockchain)
+ EthEngine(context)
+ else if (Blockchain.Token == context.blockchain)
+ TokenEngine(context)
+ else
+ return null
+ } catch (e: Exception) {
+ e.printStackTrace()
+ result = null
+ Log.e(TAG, "Can't create CoinEngine!")
+ }
+ return result
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/domain/wallet/EthTransaction.java b/app/src/main/java/com/tangem/domain/wallet/EthTransaction.java
index 541d9767de..aa13d6d93e 100644
--- a/app/src/main/java/com/tangem/domain/wallet/EthTransaction.java
+++ b/app/src/main/java/com/tangem/domain/wallet/EthTransaction.java
@@ -2,7 +2,6 @@ package com.tangem.domain.wallet;
import android.util.Log;
-import com.tangem.util.BTCUtils;
import com.tangem.util.ByteUtil;
import com.tangem.util.CryptoUtil;
diff --git a/app/src/main/java/com/tangem/domain/wallet/RLPList.java b/app/src/main/java/com/tangem/domain/wallet/RLPList.java
index 37162c32fc..90915c9f27 100644
--- a/app/src/main/java/com/tangem/domain/wallet/RLPList.java
+++ b/app/src/main/java/com/tangem/domain/wallet/RLPList.java
@@ -1,7 +1,5 @@
package com.tangem.domain.wallet;
-import com.tangem.util.BTCUtils;
-
import java.util.ArrayList;
/**
diff --git a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java
index 7ccdd26107..54367b1a0d 100644
--- a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java
+++ b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java
@@ -4,6 +4,7 @@ import android.os.Bundle;
import android.util.Log;
import com.google.common.base.Strings;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.cardReader.SettingsMask;
import com.tangem.util.Util;
@@ -250,7 +251,7 @@ public class TangemCard {
return contractAddress;
}
- String tokenSymbol = "";
+ public String tokenSymbol = "";
public void setTokenSymbol(String symbol) {
tokenSymbol = symbol;
@@ -598,7 +599,7 @@ public class TangemCard {
public void setDenomination(byte[] denomination) {
this.Denomination = denomination;
try {
- CoinEngine engine=CoinEngineFactory.create(getBlockchain());
+ CoinEngine engine= CoinEngineFactory.INSTANCE.create(getBlockchain());
CoinEngine.InternalAmount internalAmount=engine.convertToInternalAmount(denomination);
CoinEngine.Amount amount=engine.convertToAmount(internalAmount);
this.DenominationText = amount.toString();
diff --git a/app/src/main/java/com/tangem/domain/wallet/TangemContext.java b/app/src/main/java/com/tangem/domain/wallet/TangemContext.java
index 7ab12cebbf..ba690c011d 100644
--- a/app/src/main/java/com/tangem/domain/wallet/TangemContext.java
+++ b/app/src/main/java/com/tangem/domain/wallet/TangemContext.java
@@ -90,7 +90,7 @@ public class TangemContext {
if (bundle.containsKey(EXTRA_BLOCKCHAIN_DATA)) {
tangemContext.coinData = CoinData.fromBundle(tangemContext.getBlockchain(), bundle.getBundle(EXTRA_BLOCKCHAIN_DATA));
} else {
- tangemContext.coinData = CoinEngineFactory.create(tangemContext).createCoinData();
+ tangemContext.coinData = CoinEngineFactory.INSTANCE.create(tangemContext).createCoinData();
}
}
tangemContext.error = bundle.getString("Error");
diff --git a/app/src/main/java/com/tangem/domain/wallet/Transaction.java b/app/src/main/java/com/tangem/domain/wallet/Transaction.java
index e9cf7aa04e..99fa23ccdd 100644
--- a/app/src/main/java/com/tangem/domain/wallet/Transaction.java
+++ b/app/src/main/java/com/tangem/domain/wallet/Transaction.java
@@ -4,7 +4,9 @@ package com.tangem.domain.wallet;
* Created by Ilia on 29.09.2017.
*/
-import com.tangem.util.BTCUtils;
+import com.tangem.domain.wallet.btc.BitcoinException;
+import com.tangem.domain.wallet.btc.BitcoinInputStream;
+import com.tangem.domain.wallet.btc.BitcoinOutputStream;
import com.tangem.util.CryptoUtil;
import java.io.ByteArrayOutputStream;
diff --git a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashAddressDecodedParts.java b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashAddressDecodedParts.java
similarity index 92%
rename from app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashAddressDecodedParts.java
rename to app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashAddressDecodedParts.java
index afca389706..c3229f4ca6 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashAddressDecodedParts.java
+++ b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashAddressDecodedParts.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet.BitcoinCash;
+package com.tangem.domain.wallet.bch;
// Helper class for CashAddr
diff --git a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashAddressType.java b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashAddressType.java
similarity index 90%
rename from app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashAddressType.java
rename to app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashAddressType.java
index 169f9008a5..d140031086 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashAddressType.java
+++ b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashAddressType.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet.BitcoinCash;
+package com.tangem.domain.wallet.bch;
/**
diff --git a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashBase32.java b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashBase32.java
similarity index 97%
rename from app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashBase32.java
rename to app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashBase32.java
index 82e7d6b359..0ddb910295 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashBase32.java
+++ b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashBase32.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet.BitcoinCash;
+package com.tangem.domain.wallet.bch;
import java.util.HashMap;
import java.util.Map;
diff --git a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashBitArrayConverter.java b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashBitArrayConverter.java
similarity index 97%
rename from app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashBitArrayConverter.java
rename to app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashBitArrayConverter.java
index 43d5b19de8..770f16fbbe 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BitcoinCashBitArrayConverter.java
+++ b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashBitArrayConverter.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet.BitcoinCash;
+package com.tangem.domain.wallet.bch;
/**
* Copyright (c) 2018 Tobias Brandt
*
diff --git a/app/src/main/java/com/tangem/domain/BitcoinCashNode.kt b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashNode.kt
similarity index 85%
rename from app/src/main/java/com/tangem/domain/BitcoinCashNode.kt
rename to app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashNode.kt
index 93af538d28..7cd8f18c8c 100644
--- a/app/src/main/java/com/tangem/domain/BitcoinCashNode.kt
+++ b/app/src/main/java/com/tangem/domain/wallet/bch/BitcoinCashNode.kt
@@ -1,4 +1,4 @@
-package com.tangem.domain
+package com.tangem.domain.wallet.bch
enum class BitcoinCashNode(val host: String, val port: Int) {
n1("electrumx-bch.cryptonermal.net", 50001),
diff --git a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BtcCashEngine.java b/app/src/main/java/com/tangem/domain/wallet/bch/BtcCashEngine.java
similarity index 98%
rename from app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BtcCashEngine.java
rename to app/src/main/java/com/tangem/domain/wallet/bch/BtcCashEngine.java
index 7240084e2b..a2cf960062 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/BtcCashEngine.java
+++ b/app/src/main/java/com/tangem/domain/wallet/bch/BtcCashEngine.java
@@ -1,23 +1,22 @@
-package com.tangem.domain.wallet.BitcoinCash;
+package com.tangem.domain.wallet.bch;
import android.net.Uri;
import android.text.InputFilter;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.cardReader.CardProtocol;
import com.tangem.domain.cardReader.TLV;
import com.tangem.domain.wallet.BalanceValidator;
-import com.tangem.domain.wallet.Base58;
import com.tangem.domain.wallet.Blockchain;
-import com.tangem.domain.wallet.BtcData;
+import com.tangem.domain.wallet.CoinEngineFactory;
+import com.tangem.domain.wallet.btc.BtcData;
import com.tangem.domain.wallet.CoinData;
import com.tangem.domain.wallet.CoinEngine;
-import com.tangem.domain.wallet.CoinEngineFactory;
-import com.tangem.domain.wallet.PINStorage;
import com.tangem.domain.wallet.TangemCard;
import com.tangem.domain.wallet.TangemContext;
import com.tangem.domain.wallet.Transaction;
import com.tangem.domain.wallet.UnspentOutputInfo;
-import com.tangem.util.BTCUtils;
+import com.tangem.domain.wallet.BTCUtils;
import com.tangem.util.CryptoUtil;
import com.tangem.util.DecimalDigitsInputFilter;
import com.tangem.util.DerEncodingUtil;
@@ -34,10 +33,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-/**
- * Created by Ilia on 15.02.2018.
- */
-
public class BtcCashEngine extends CoinEngine {
public BtcData coinData = null;
@@ -443,7 +438,7 @@ public class BtcCashEngine extends CoinEngine {
checkBlockchainDataExists();
- CoinEngine engine = CoinEngineFactory.create(ctx);
+ CoinEngine engine = CoinEngineFactory.INSTANCE.create(ctx);
String srcLegacyAddress = ((BtcCashEngine)engine).convertToLegacyAddress(ctx.getCard().getWallet());
String destLegacyAddress = ((BtcCashEngine)engine).convertToLegacyAddress(destAddress);
diff --git a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/CashAddr.java b/app/src/main/java/com/tangem/domain/wallet/bch/CashAddr.java
similarity index 99%
rename from app/src/main/java/com/tangem/domain/wallet/BitcoinCash/CashAddr.java
rename to app/src/main/java/com/tangem/domain/wallet/bch/CashAddr.java
index 05fe7c2353..203d2e7d25 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BitcoinCash/CashAddr.java
+++ b/app/src/main/java/com/tangem/domain/wallet/bch/CashAddr.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet.BitcoinCash;
+package com.tangem.domain.wallet.bch;
import java.math.BigInteger;
import java.util.Arrays;
diff --git a/app/src/main/java/com/tangem/domain/wallet/BitcoinException.java b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinException.java
similarity index 97%
rename from app/src/main/java/com/tangem/domain/wallet/BitcoinException.java
rename to app/src/main/java/com/tangem/domain/wallet/btc/BitcoinException.java
index 3e5ee174ae..cad6f01464 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BitcoinException.java
+++ b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinException.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet;
+package com.tangem.domain.wallet.btc;
/**
* Created by Ilia on 29.09.2017.
diff --git a/app/src/main/java/com/tangem/domain/wallet/BitcoinInputStream.java b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinInputStream.java
similarity index 98%
rename from app/src/main/java/com/tangem/domain/wallet/BitcoinInputStream.java
rename to app/src/main/java/com/tangem/domain/wallet/btc/BitcoinInputStream.java
index 4a71269ac7..109e0e7323 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BitcoinInputStream.java
+++ b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinInputStream.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet;
+package com.tangem.domain.wallet.btc;
/**
* Created by Ilia on 29.09.2017.
diff --git a/app/src/main/java/com/tangem/domain/BitcoinNode.kt b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinNode.kt
similarity index 93%
rename from app/src/main/java/com/tangem/domain/BitcoinNode.kt
rename to app/src/main/java/com/tangem/domain/wallet/btc/BitcoinNode.kt
index 63dd415f57..63c207b6ec 100644
--- a/app/src/main/java/com/tangem/domain/BitcoinNode.kt
+++ b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinNode.kt
@@ -1,4 +1,4 @@
-package com.tangem.domain
+package com.tangem.domain.wallet.btc
enum class BitcoinNode(val host: String, val port: Int) {
n1("electrum.anduck.net", 50001),
diff --git a/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinNodeSsl.kt b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinNodeSsl.kt
new file mode 100644
index 0000000000..ce7656323f
--- /dev/null
+++ b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinNodeSsl.kt
@@ -0,0 +1,7 @@
+package com.tangem.domain.wallet.btc
+
+enum class BitcoinNodeSsl(val host: String, val port: Int) {
+ n1("electrum.anduck.net", 50012),
+ n2("electrum.eff.ro", 50002),
+ n3("vps.hsmiths.com", 50002)
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/domain/BitcoinNodeTestNet.kt b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinNodeTestNet.kt
similarity index 85%
rename from app/src/main/java/com/tangem/domain/BitcoinNodeTestNet.kt
rename to app/src/main/java/com/tangem/domain/wallet/btc/BitcoinNodeTestNet.kt
index 8d64d95276..34b257c278 100644
--- a/app/src/main/java/com/tangem/domain/BitcoinNodeTestNet.kt
+++ b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinNodeTestNet.kt
@@ -1,4 +1,4 @@
-package com.tangem.domain
+package com.tangem.domain.wallet.btc
enum class BitcoinNodeTestNet(val host: String, val port: Int) {
n1("testnetnode.arihanc.com", 51001),
diff --git a/app/src/main/java/com/tangem/domain/wallet/BitcoinOutputStream.java b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinOutputStream.java
similarity index 96%
rename from app/src/main/java/com/tangem/domain/wallet/BitcoinOutputStream.java
rename to app/src/main/java/com/tangem/domain/wallet/btc/BitcoinOutputStream.java
index 5f5c283ab1..243eb7ca10 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BitcoinOutputStream.java
+++ b/app/src/main/java/com/tangem/domain/wallet/btc/BitcoinOutputStream.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet;
+package com.tangem.domain.wallet.btc;
/**
* Created by Ilia on 29.09.2017.
diff --git a/app/src/main/java/com/tangem/domain/wallet/BtcData.java b/app/src/main/java/com/tangem/domain/wallet/btc/BtcData.java
similarity index 96%
rename from app/src/main/java/com/tangem/domain/wallet/BtcData.java
rename to app/src/main/java/com/tangem/domain/wallet/btc/BtcData.java
index acb6f43f5c..497ec30abe 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BtcData.java
+++ b/app/src/main/java/com/tangem/domain/wallet/btc/BtcData.java
@@ -1,8 +1,11 @@
-package com.tangem.domain.wallet;
+package com.tangem.domain.wallet.btc;
import android.os.Bundle;
import android.util.Log;
+import com.tangem.domain.wallet.CoinData;
+import com.tangem.domain.wallet.CoinEngine;
+
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/com/tangem/domain/wallet/BtcEngine.java b/app/src/main/java/com/tangem/domain/wallet/btc/BtcEngine.java
similarity index 89%
rename from app/src/main/java/com/tangem/domain/wallet/BtcEngine.java
rename to app/src/main/java/com/tangem/domain/wallet/btc/BtcEngine.java
index 97999a8774..3f1bee11e5 100644
--- a/app/src/main/java/com/tangem/domain/wallet/BtcEngine.java
+++ b/app/src/main/java/com/tangem/domain/wallet/btc/BtcEngine.java
@@ -1,11 +1,21 @@
-package com.tangem.domain.wallet;
+package com.tangem.domain.wallet.btc;
import android.net.Uri;
import android.text.InputFilter;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.cardReader.CardProtocol;
import com.tangem.domain.cardReader.TLV;
-import com.tangem.util.BTCUtils;
+import com.tangem.domain.wallet.BalanceValidator;
+import com.tangem.domain.wallet.Base58;
+import com.tangem.domain.wallet.Blockchain;
+import com.tangem.domain.wallet.CoinData;
+import com.tangem.domain.wallet.CoinEngine;
+import com.tangem.domain.wallet.TangemCard;
+import com.tangem.domain.wallet.TangemContext;
+import com.tangem.domain.wallet.Transaction;
+import com.tangem.domain.wallet.UnspentOutputInfo;
+import com.tangem.domain.wallet.BTCUtils;
import com.tangem.util.CryptoUtil;
import com.tangem.util.DecimalDigitsInputFilter;
import com.tangem.util.DerEncodingUtil;
@@ -52,17 +62,17 @@ public class BtcEngine extends CoinEngine {
}
@Override
- public boolean awaitingConfirmation(){
- if( coinData ==null ) return false;
+ public boolean awaitingConfirmation() {
+ if (coinData == null) return false;
return coinData.getBalanceUnconfirmed() != 0;
}
@Override
public String getBalanceHTML() {
- Amount balance=getBalance();
- if( balance!=null ) {
+ Amount balance = getBalance();
+ if (balance != null) {
return balance.toDescriptionString(getDecimals());
- }else{
+ } else {
return "";
}
}
@@ -74,21 +84,21 @@ public class BtcEngine extends CoinEngine {
@Override
public String getOfflineBalanceHTML() {
- InternalAmount offlineInternalAmount = convertToInternalAmount(ctx.getCard().getOfflineBalance());
- Amount offlineAmount = convertToAmount(offlineInternalAmount);
- return offlineAmount.toDescriptionString(getDecimals());
+ InternalAmount offlineInternalAmount = convertToInternalAmount(ctx.getCard().getOfflineBalance());
+ Amount offlineAmount = convertToAmount(offlineInternalAmount);
+ return offlineAmount.toDescriptionString(getDecimals());
}
@Override
public boolean isBalanceNotZero() {
- if( coinData ==null ) return false;
+ if (coinData == null) return false;
if (coinData.getBalanceInInternalUnits() == null) return false;
return coinData.getBalanceInInternalUnits().notZero();
}
@Override
- public boolean hasBalanceInfo(){
- if( coinData ==null ) return false;
+ public boolean hasBalanceInfo() {
+ if (coinData == null) return false;
return coinData.hasBalanceInfo();
}
@@ -183,12 +193,12 @@ public class BtcEngine extends CoinEngine {
@Override
public InputFilter[] getAmountInputFilters() {
- return new InputFilter[] { new DecimalDigitsInputFilter(getDecimals()) };
+ return new InputFilter[]{new DecimalDigitsInputFilter(getDecimals())};
}
@Override
- public boolean checkNewTransactionAmount(Amount amount){
- if( coinData ==null ) return false;
+ public boolean checkNewTransactionAmount(Amount amount) {
+ if (coinData == null) return false;
if (amount.compareTo(convertToAmount(coinData.getBalanceInInternalUnits())) > 0) {
return false;
}
@@ -215,10 +225,10 @@ public class BtcEngine extends CoinEngine {
if (fee.isZero() || amount.isZero())
return false;
- if (isIncludeFee && (amount.compareTo(coinData.getBalanceInInternalUnits())>0 || amount.compareTo(fee)<0))
+ if (isIncludeFee && (amount.compareTo(coinData.getBalanceInInternalUnits()) > 0 || amount.compareTo(fee) < 0))
return false;
- if (!isIncludeFee && amount.add(fee).compareTo(coinData.getBalanceInInternalUnits())>0)
+ if (!isIncludeFee && amount.add(fee).compareTo(coinData.getBalanceInInternalUnits()) > 0)
return false;
return true;
@@ -267,7 +277,7 @@ public class BtcEngine extends CoinEngine {
// return;
// }
- if ((ctx.getCard().getOfflineBalance() != null) && !coinData.isBalanceReceived() && (ctx.getCard().getRemainingSignatures() == ctx.getCard().getMaxSignatures()) && coinData.getBalanceInInternalUnits().notZero() ) {
+ if ((ctx.getCard().getOfflineBalance() != null) && !coinData.isBalanceReceived() && (ctx.getCard().getRemainingSignatures() == ctx.getCard().getMaxSignatures()) && coinData.getBalanceInInternalUnits().notZero()) {
balanceValidator.setScore(80);
balanceValidator.setFirstLine("Verified offline balance");
balanceValidator.setSecondLine("Can't obtain balance from blockchain. Restore internet connection to be more confident. ");
@@ -293,28 +303,26 @@ public class BtcEngine extends CoinEngine {
@Override
public Amount getBalance() {
- if( !hasBalanceInfo() ) return null;
+ if (!hasBalanceInfo()) return null;
return convertToAmount(coinData.getBalanceInInternalUnits());
}
@Override
public String evaluateFeeEquivalent(String fee) {
- if( !coinData.getAmountEquivalentDescriptionAvailable() ) return "";
+ if (!coinData.getAmountEquivalentDescriptionAvailable()) return "";
try {
Amount feeAmount = new Amount(fee, getFeeCurrency());
return feeAmount.toEquivalentString(coinData.getRate());
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return "";
}
}
@Override
public String getBalanceEquivalent() {
- if( coinData ==null || !coinData.getAmountEquivalentDescriptionAvailable() ) return "";
- Amount balance=getBalance();
- if( balance==null ) return "";
+ if (coinData == null || !coinData.getAmountEquivalentDescriptionAvailable()) return "";
+ Amount balance = getBalance();
+ if (balance == null) return "";
return balance.toEquivalentString(coinData.getRate());
}
@@ -354,7 +362,7 @@ public class BtcEngine extends CoinEngine {
@Override
public Amount convertToAmount(InternalAmount internalAmount) {
- BigDecimal d=internalAmount.divide(new BigDecimal("100000000"));
+ BigDecimal d = internalAmount.divide(new BigDecimal("100000000"));
return new Amount(d, getBalanceCurrency());
}
@@ -365,7 +373,7 @@ public class BtcEngine extends CoinEngine {
@Override
public InternalAmount convertToInternalAmount(Amount amount) throws Exception {
- BigDecimal d=amount.multiply(new BigDecimal("100000000"));
+ BigDecimal d = amount.multiply(new BigDecimal("100000000"));
return new InternalAmount(d, "Satoshi");
}
@@ -374,7 +382,7 @@ public class BtcEngine extends CoinEngine {
if (bytes == null) return null;
byte[] reversed = new byte[bytes.length];
for (int i = 0; i < bytes.length; i++) reversed[i] = bytes[bytes.length - i - 1];
- return new InternalAmount(Util.byteArrayToLong(reversed),"Satoshi");
+ return new InternalAmount(Util.byteArrayToLong(reversed), "Satoshi");
}
@Override
diff --git a/app/src/main/java/com/tangem/domain/wallet/EthData.java b/app/src/main/java/com/tangem/domain/wallet/eth/EthData.java
similarity index 94%
rename from app/src/main/java/com/tangem/domain/wallet/EthData.java
rename to app/src/main/java/com/tangem/domain/wallet/eth/EthData.java
index 79646cb92e..df44ecef13 100644
--- a/app/src/main/java/com/tangem/domain/wallet/EthData.java
+++ b/app/src/main/java/com/tangem/domain/wallet/eth/EthData.java
@@ -1,7 +1,11 @@
-package com.tangem.domain.wallet;
+package com.tangem.domain.wallet.eth;
import android.os.Bundle;
import android.util.Log;
+
+import com.tangem.domain.wallet.CoinData;
+import com.tangem.domain.wallet.CoinEngine;
+
import java.math.BigInteger;
public class EthData extends CoinData {
diff --git a/app/src/main/java/com/tangem/domain/wallet/EthEngine.java b/app/src/main/java/com/tangem/domain/wallet/eth/EthEngine.java
similarity index 95%
rename from app/src/main/java/com/tangem/domain/wallet/EthEngine.java
rename to app/src/main/java/com/tangem/domain/wallet/eth/EthEngine.java
index 5cd8090e20..bcf844f3bb 100644
--- a/app/src/main/java/com/tangem/domain/wallet/EthEngine.java
+++ b/app/src/main/java/com/tangem/domain/wallet/eth/EthEngine.java
@@ -1,12 +1,23 @@
-package com.tangem.domain.wallet;
+package com.tangem.domain.wallet.eth;
import android.net.Uri;
import android.text.InputFilter;
import android.util.Log;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.cardReader.CardProtocol;
import com.tangem.domain.cardReader.TLV;
-import com.tangem.util.BTCUtils;
+import com.tangem.domain.wallet.BalanceValidator;
+import com.tangem.domain.wallet.Blockchain;
+import com.tangem.domain.wallet.CoinData;
+import com.tangem.domain.wallet.CoinEngine;
+import com.tangem.domain.wallet.ECDSASignatureETH;
+import com.tangem.domain.wallet.EthTransaction;
+import com.tangem.domain.wallet.Issuer;
+import com.tangem.domain.wallet.Keccak256;
+import com.tangem.domain.wallet.TangemCard;
+import com.tangem.domain.wallet.TangemContext;
+import com.tangem.domain.wallet.BTCUtils;
import com.tangem.util.CryptoUtil;
import com.tangem.util.DecimalDigitsInputFilter;
import com.tangem.wallet.R;
diff --git a/app/src/main/java/com/tangem/domain/wallet/TokenData.java b/app/src/main/java/com/tangem/domain/wallet/token/TokenData.java
similarity index 88%
rename from app/src/main/java/com/tangem/domain/wallet/TokenData.java
rename to app/src/main/java/com/tangem/domain/wallet/token/TokenData.java
index 1d51042329..b0bfd6cd50 100644
--- a/app/src/main/java/com/tangem/domain/wallet/TokenData.java
+++ b/app/src/main/java/com/tangem/domain/wallet/token/TokenData.java
@@ -1,10 +1,10 @@
-package com.tangem.domain.wallet;
+package com.tangem.domain.wallet.token;
import android.os.Bundle;
import android.util.Log;
-import java.math.BigDecimal;
-import java.math.BigInteger;
+import com.tangem.domain.wallet.CoinEngine;
+import com.tangem.domain.wallet.eth.EthData;
public class TokenData extends EthData {
private CoinEngine.InternalAmount balanceAlter = null;
diff --git a/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java b/app/src/main/java/com/tangem/domain/wallet/token/TokenEngine.java
similarity index 97%
rename from app/src/main/java/com/tangem/domain/wallet/TokenEngine.java
rename to app/src/main/java/com/tangem/domain/wallet/token/TokenEngine.java
index 0812d58ad9..a509810107 100644
--- a/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java
+++ b/app/src/main/java/com/tangem/domain/wallet/token/TokenEngine.java
@@ -1,13 +1,23 @@
-package com.tangem.domain.wallet;
+package com.tangem.domain.wallet.token;
import android.net.Uri;
import android.text.InputFilter;
import android.util.Log;
import com.google.common.base.Strings;
+import com.tangem.data.db.PINStorage;
import com.tangem.domain.cardReader.CardProtocol;
import com.tangem.domain.cardReader.TLV;
-import com.tangem.util.BTCUtils;
+import com.tangem.domain.wallet.BalanceValidator;
+import com.tangem.domain.wallet.CoinData;
+import com.tangem.domain.wallet.CoinEngine;
+import com.tangem.domain.wallet.ECDSASignatureETH;
+import com.tangem.domain.wallet.EthTransaction;
+import com.tangem.domain.wallet.Issuer;
+import com.tangem.domain.wallet.Keccak256;
+import com.tangem.domain.wallet.TangemCard;
+import com.tangem.domain.wallet.TangemContext;
+import com.tangem.domain.wallet.BTCUtils;
import com.tangem.util.CryptoUtil;
import com.tangem.util.DecimalDigitsInputFilter;
import com.tangem.wallet.R;
diff --git a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt
index 7ad17be028..cbd6606485 100644
--- a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt
@@ -14,11 +14,13 @@ import android.view.KeyEvent
import android.view.View
import android.widget.Toast
import com.tangem.data.network.ElectrumRequest
-import com.tangem.data.network.ServerApiHelper
-import com.tangem.data.network.ServerApiHelperElectrum
+import com.tangem.data.network.ServerApiCommon
+import com.tangem.data.network.ServerApiElectrum
+import com.tangem.data.network.ServerApiInfura
import com.tangem.data.network.model.InfuraResponse
import com.tangem.domain.cardReader.NfcManager
import com.tangem.domain.wallet.*
+import com.tangem.domain.wallet.btc.BtcData
import com.tangem.util.*
import com.tangem.wallet.R
import kotlinx.android.synthetic.main.activity_confirm_payment.*
@@ -37,8 +39,9 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
private var nfcManager: NfcManager? = null
- private var serverApiHelper: ServerApiHelper = ServerApiHelper()
- private var serverApiHelperElectrum: ServerApiHelperElectrum = ServerApiHelperElectrum()
+ private var serverApiCommon: ServerApiCommon = ServerApiCommon()
+ private var serverApiInfura: ServerApiInfura = ServerApiInfura()
+ private var serverApiElectrum: ServerApiElectrum = ServerApiElectrum()
private lateinit var ctx: TangemContext
private lateinit var amount: CoinEngine.Amount
@@ -97,7 +100,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
if (ctx.blockchain == Blockchain.Ethereum || ctx.blockchain == Blockchain.EthereumTestNet || ctx.blockchain == Blockchain.Token) {
rgFee.isEnabled = false
- requestInfura(ServerApiHelper.INFURA_ETH_GAS_PRICE)
+ requestInfura(ServerApiInfura.INFURA_ETH_GAS_PRICE)
} else {
rgFee.isEnabled = true
@@ -228,10 +231,10 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
// serverApiHelperElectrum.setElectrumRequestData(electrumBodyListener)
// request infura eth gasPrice listener
- val infuraBodyListener: ServerApiHelper.InfuraBodyListener = object : ServerApiHelper.InfuraBodyListener {
+ val infuraBodyListener: ServerApiInfura.InfuraBodyListener = object : ServerApiInfura.InfuraBodyListener {
override fun onSuccess(method: String, infuraResponse: InfuraResponse) {
when (method) {
- ServerApiHelper.INFURA_ETH_GAS_PRICE -> {
+ ServerApiInfura.INFURA_ETH_GAS_PRICE -> {
var gasPrice = infuraResponse.result
gasPrice = gasPrice.substring(2)
//TODO - remove Gwei
@@ -260,16 +263,16 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
override fun onFail(method: String, message: String) {
when (method) {
- ServerApiHelper.INFURA_ETH_GAS_PRICE -> {
+ ServerApiInfura.INFURA_ETH_GAS_PRICE -> {
finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain))
}
}
}
}
- serverApiHelper.setInfuraResponse(infuraBodyListener)
+ serverApiInfura.setInfuraResponse(infuraBodyListener)
// request estimate fee listener
- val estimateFeeListener: ServerApiHelper.EstimateFeeListener = object : ServerApiHelper.EstimateFeeListener {
+ val estimateFeeListener: ServerApiCommon.EstimateFeeListener = object : ServerApiCommon.EstimateFeeListener {
override fun onSuccess(blockCount: Int, estimateFeeResponse: String?) {
var fee: BigDecimal?
fee = BigDecimal(estimateFeeResponse) // BTC per 1 kb
@@ -290,17 +293,17 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
fee = fee!!.setScale(8, RoundingMode.DOWN)
when (blockCount) {
- ServerApiHelper.ESTIMATE_FEE_MINIMAL -> {
+ ServerApiCommon.ESTIMATE_FEE_MINIMAL -> {
minFee = CoinEngine.Amount(fee, engine.feeCurrency)
if (rgFee.checkedRadioButtonId == R.id.rbMinimalFee) doSetFee(rgFee.checkedRadioButtonId)
}
- ServerApiHelper.ESTIMATE_FEE_NORMAL -> {
+ ServerApiCommon.ESTIMATE_FEE_NORMAL -> {
normalFee = CoinEngine.Amount(fee, engine.feeCurrency)
if (rgFee.checkedRadioButtonId == R.id.rbNormalFee) doSetFee(rgFee.checkedRadioButtonId)
}
- ServerApiHelper.ESTIMATE_FEE_PRIORITY -> {
+ ServerApiCommon.ESTIMATE_FEE_PRIORITY -> {
maxFee = CoinEngine.Amount(fee, engine.feeCurrency)
if (rgFee.checkedRadioButtonId == R.id.rbMaximumFee) doSetFee(rgFee.checkedRadioButtonId)
}
@@ -318,7 +321,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_calculate_fee_wrong_data_received_from_node))
}
}
- serverApiHelper.setEstimateFee(estimateFeeListener)
+ serverApiCommon.setEstimateFee(estimateFeeListener)
}
public override fun onResume() {
@@ -460,22 +463,22 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) {
if (UtilHelper.isOnline(this)) {
- serverApiHelperElectrum.electrumRequestData(card, electrumRequest)
+ serverApiElectrum.electrumRequestData(card, electrumRequest)
} else
finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain))
}
private fun requestInfura(method: String) {
if (UtilHelper.isOnline(this)) {
- serverApiHelper.infura(method, 67, ctx.card!!.wallet, "", "")
+ serverApiInfura.infura(method, 67, ctx.card!!.wallet, "", "")
} else
finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain))
}
private fun requestEstimateFee() {
- serverApiHelper.estimateFee(ServerApiHelper.ESTIMATE_FEE_PRIORITY)
- serverApiHelper.estimateFee(ServerApiHelper.ESTIMATE_FEE_NORMAL)
- serverApiHelper.estimateFee(ServerApiHelper.ESTIMATE_FEE_MINIMAL)
+ serverApiCommon.estimateFee(ServerApiCommon.ESTIMATE_FEE_PRIORITY)
+ serverApiCommon.estimateFee(ServerApiCommon.ESTIMATE_FEE_NORMAL)
+ serverApiCommon.estimateFee(ServerApiCommon.ESTIMATE_FEE_MINIMAL)
}
private fun doSetFee(checkedRadioButtonId: Int) {
diff --git a/app/src/main/java/com/tangem/presentation/activity/LogoActivity.kt b/app/src/main/java/com/tangem/presentation/activity/LogoActivity.kt
index 87ddd9de47..6203e8962a 100644
--- a/app/src/main/java/com/tangem/presentation/activity/LogoActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/LogoActivity.kt
@@ -1,13 +1,14 @@
package com.tangem.presentation.activity
import android.annotation.SuppressLint
-import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
-import com.tangem.data.network.ServerApiHelperElectrum
+import com.tangem.App
+import com.tangem.di.Navigator
import com.tangem.wallet.BuildConfig
import com.tangem.wallet.R
import kotlinx.android.synthetic.main.activity_logo.*
+import javax.inject.Inject
class LogoActivity : AppCompatActivity() {
@@ -18,14 +19,17 @@ class LogoActivity : AppCompatActivity() {
const val MILLIS_AUTO_HIDE = 1000
}
- private var serverApiHelperElectrum: ServerApiHelperElectrum = ServerApiHelperElectrum()
-
private val hideRunnable = Runnable { this.hide() }
+ @Inject
+ internal lateinit var navigator: Navigator
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_logo)
+ App.getNavigatorComponent().inject(this)
+
ivLogo.setOnClickListener { hide() }
}
@@ -43,8 +47,7 @@ class LogoActivity : AppCompatActivity() {
}
private fun hide() {
- val intent = Intent(baseContext, MainActivity::class.java)
- startActivity(intent)
+ navigator.showMain(this)
finish()
}
diff --git a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt
index 8153d00074..db08ff96a1 100644
--- a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt
@@ -24,7 +24,10 @@ import android.view.animation.Transformation
import android.widget.RelativeLayout
import android.widget.Toast
import com.scottyab.rootbeer.RootBeer
-import com.tangem.data.network.ServerApiHelper
+import com.tangem.data.Logger
+import com.tangem.data.db.PINStorage
+import com.tangem.data.network.ServerApiCommon
+import com.tangem.data.nfc.DeviceNFCAntennaLocation
import com.tangem.data.nfc.ReadCardInfoTask
import com.tangem.domain.cardReader.CardProtocol
import com.tangem.domain.cardReader.FW
@@ -150,7 +153,7 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco
fab.setOnClickListener { showMenu(it) }
- val apiHelper = ServerApiHelper()
+ val apiHelper = ServerApiCommon()
apiHelper.setLastVersionListener { response ->
try {
if (response.isNullOrEmpty()) return@setLastVersionListener
diff --git a/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt
index e28f447200..820dfb4dae 100644
--- a/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt
@@ -19,10 +19,10 @@ import android.text.TextUtils
import android.util.Log
import android.view.View
import android.widget.Button
-import com.tangem.data.network.task.request_pin.StartFingerprintReaderTask
+import com.tangem.data.fingerprint.StartFingerprintReaderTask
import com.tangem.domain.cardReader.NfcManager
-import com.tangem.domain.wallet.FingerprintHelper
-import com.tangem.domain.wallet.PINStorage
+import com.tangem.data.fingerprint.FingerprintHelper
+import com.tangem.data.db.PINStorage
import com.tangem.domain.wallet.TangemCard
import com.tangem.wallet.R
import kotlinx.android.synthetic.main.activity_pin_request.*
diff --git a/app/src/main/java/com/tangem/presentation/activity/PinSaveActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PinSaveActivity.kt
index 6f4192cdd4..de85d4c251 100644
--- a/app/src/main/java/com/tangem/presentation/activity/PinSaveActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/PinSaveActivity.kt
@@ -19,9 +19,9 @@ import android.text.TextUtils
import android.view.View
import android.widget.Button
import android.widget.Toast
-import com.tangem.data.network.task.save_pin.ConfirmWithFingerprintTask
-import com.tangem.domain.wallet.FingerprintHelper
-import com.tangem.domain.wallet.PINStorage
+import com.tangem.data.fingerprint.ConfirmWithFingerprintTask
+import com.tangem.data.fingerprint.FingerprintHelper
+import com.tangem.data.db.PINStorage
import com.tangem.wallet.R
import kotlinx.android.synthetic.main.activity_pin_save.*
import kotlinx.android.synthetic.main.layout_pin_buttons.*
diff --git a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherAPIWithdrawalActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt
similarity index 95%
rename from app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherAPIWithdrawalActivity.kt
rename to app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt
index 30a210bd8f..d7f21d2cac 100644
--- a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherAPIWithdrawalActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt
@@ -9,7 +9,7 @@ import android.nfc.Tag
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
-import com.tangem.data.network.Cryptonit_OtherAPI
+import com.tangem.data.network.CryptonitOtherApi
import com.tangem.domain.cardReader.NfcManager
import com.tangem.domain.wallet.Blockchain
import com.tangem.domain.wallet.CoinEngineFactory
@@ -18,10 +18,10 @@ import com.tangem.wallet.R
import kotlinx.android.synthetic.main.activity_prepare_cryptonit_other_api_withdrawal.*
import java.io.IOException
-class PrepareCryptonitOtherAPIWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
+class PrepareCryptonitOtherApiWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
companion object {
- val TAG: String = PrepareCryptonitOtherAPIWithdrawalActivity::class.java.simpleName
+ val TAG: String = PrepareCryptonitOtherApiWithdrawalActivity::class.java.simpleName
private const val REQUEST_CODE_SCAN_QR_KEY = 1
private const val REQUEST_CODE_SCAN_QR_SECRET = 2
@@ -30,7 +30,7 @@ class PrepareCryptonitOtherAPIWithdrawalActivity : AppCompatActivity(), NfcAdapt
private lateinit var ctx: TangemContext
private var nfcManager: NfcManager? = null
- private var cryptonit: Cryptonit_OtherAPI? = null
+ private var cryptonit: CryptonitOtherApi? = null
@SuppressLint("SetTextI18n")
@@ -44,7 +44,7 @@ class PrepareCryptonitOtherAPIWithdrawalActivity : AppCompatActivity(), NfcAdapt
ctx = TangemContext.loadFromBundle(this, intent.extras)
- cryptonit = Cryptonit_OtherAPI(this)
+ cryptonit = CryptonitOtherApi(this)
tvKey.text = cryptonit!!.key
tvUserID.text = cryptonit!!.userId
@@ -54,7 +54,7 @@ class PrepareCryptonitOtherAPIWithdrawalActivity : AppCompatActivity(), NfcAdapt
tvWallet.text = ctx.card!!.wallet
val engine = CoinEngineFactory.create(ctx)
- tvCurrency.text = engine.balanceCurrency
+ tvCurrency.text = engine!!.balanceCurrency
etAmount.setText(engine.convertToAmount(engine.convertToInternalAmount(ctx.card!!.denomination)).toValueString())
etAmount.filters=engine.amountInputFilters
diff --git a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt
index 4c8d54ed51..167739a07a 100644
--- a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt
@@ -55,7 +55,7 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade
tvWallet.text = ctx.card!!.wallet
val engine = CoinEngineFactory.create(ctx)
- tvCurrency.text = engine.balanceCurrency
+ tvCurrency.text = engine!!.balanceCurrency
tvFeeCurrency.text = engine.feeCurrency
etAmount.setText(engine.convertToAmount(engine.convertToInternalAmount(ctx.card!!.denomination)).toValueString())
diff --git a/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt
index 0610e0b847..1bafe7e5a3 100644
--- a/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt
@@ -60,7 +60,7 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa
tvWallet.text = ctx.card!!.wallet
val engine = CoinEngineFactory.create(ctx)
- tvCurrency.text = engine.balanceCurrency
+ tvCurrency.text = engine!!.balanceCurrency
etAmount.setText(engine.convertToAmount(engine.convertToInternalAmount(ctx.card!!.denomination)).toValueString())
etAmount.filters=engine.amountInputFilters
diff --git a/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt
index 97a4927210..987f307e47 100644
--- a/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt
@@ -81,7 +81,7 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
val engine1 = CoinEngineFactory.create(ctx)
val strAmount: String = etAmount.text.toString().replace(",", ".")
- val amount = engine1.convertToAmount(etAmount.text.toString(), tvCurrency.text.toString())
+ val amount = engine1!!.convertToAmount(etAmount.text.toString(), tvCurrency.text.toString())
try {
if (!engine.checkNewTransactionAmount(amount))
diff --git a/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt
index 63493ba6b9..cfaa151421 100644
--- a/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt
@@ -53,23 +53,19 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
public override fun onResume() {
super.onResume()
- nfcManager!!.onResume()
+ nfcManager?.onResume()
}
public override fun onPause() {
- nfcManager!!.onPause()
- if (purgeTask != null) {
- purgeTask!!.cancel(true)
- }
+ nfcManager?.onPause()
+ purgeTask?.cancel(true)
super.onPause()
}
public override fun onStop() {
// dismiss enable NFC dialog
- nfcManager!!.onStop()
- if (purgeTask != null) {
- purgeTask!!.cancel(true)
- }
+ nfcManager?.onStop()
+ purgeTask?.cancel(true)
super.onStop()
}
@@ -88,7 +84,7 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
purgeTask!!.start()
} else {
// this Log.d(TAG, "Mismatch card UID (" + sUID + " instead of " + card.getUID() + ")");
- nfcManager!!.ignoreTag(isoDep.tag)
+ nfcManager?.ignoreTag(isoDep.tag)
}
} catch (e: Exception) {
@@ -109,9 +105,9 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
}
override fun onReadStart(cardProtocol: CardProtocol) {
- progressBar!!.post {
- progressBar!!.visibility = View.VISIBLE
- progressBar!!.progress = 5
+ progressBar.post {
+ progressBar.visibility = View.VISIBLE
+ progressBar.progress = 5
}
}
diff --git a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt
index 7206af57be..279c561445 100644
--- a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt
+++ b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt
@@ -8,14 +8,14 @@ import android.support.v7.app.AppCompatActivity
import android.view.KeyEvent
import android.widget.Toast
import com.tangem.data.network.ElectrumRequest
-import com.tangem.data.network.ServerApiHelper
-import com.tangem.data.network.ServerApiHelperElectrum
+import com.tangem.data.network.ServerApiElectrum
+import com.tangem.data.network.ServerApiInfura
import com.tangem.data.network.model.InfuraResponse
import com.tangem.domain.cardReader.NfcManager
import com.tangem.domain.wallet.*
+import com.tangem.domain.wallet.eth.EthData
import com.tangem.util.UtilHelper
import com.tangem.wallet.R
-import org.json.JSONException
import java.io.IOException
import java.math.BigInteger
@@ -25,8 +25,8 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
const val EXTRA_TX: String = "TX"
}
- private var serverApiHelper: ServerApiHelper = ServerApiHelper()
- private var serverApiHelperElectrum: ServerApiHelperElectrum = ServerApiHelperElectrum()
+ private var serverApiInfura: ServerApiInfura = ServerApiInfura()
+ private var serverApiElectrum: ServerApiElectrum = ServerApiElectrum()
private lateinit var ctx: TangemContext
private var tx: String? = null
@@ -46,14 +46,14 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
val engine = CoinEngineFactory.create(ctx)
if (ctx.blockchain == Blockchain.Ethereum || ctx.blockchain == Blockchain.EthereumTestNet || ctx.blockchain == Blockchain.Token)
- requestInfura(ServerApiHelper.INFURA_ETH_SEND_RAW_TRANSACTION, "")
+ requestInfura(ServerApiInfura.INFURA_ETH_SEND_RAW_TRANSACTION, "")
else if (ctx.blockchain == Blockchain.Bitcoin || ctx.blockchain == Blockchain.BitcoinTestNet)
requestElectrum(ctx.card!!, ElectrumRequest.broadcast(ctx.card!!.wallet, tx))
else if (ctx.blockchain == Blockchain.BitcoinCash)
requestElectrum(ctx.card!!, ElectrumRequest.broadcast(ctx.card!!.wallet, tx))
// request electrum listener
- val electrumBodyListener: ServerApiHelperElectrum.ElectrumRequestDataListener = object : ServerApiHelperElectrum.ElectrumRequestDataListener {
+ val electrumBodyListener: ServerApiElectrum.ElectrumRequestDataListener = object : ServerApiElectrum.ElectrumRequestDataListener {
override fun onSuccess(electrumRequest: ElectrumRequest?) {
if (electrumRequest!!.isMethod(ElectrumRequest.METHOD_SendTransaction)) {
if (electrumRequest.resultString.isEmpty())
@@ -67,13 +67,13 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
finishWithError(message!!)
}
}
- serverApiHelperElectrum.setElectrumRequestData(electrumBodyListener)
+ serverApiElectrum.setElectrumRequestData(electrumBodyListener)
// request infura listener
- val infuraBodyListener: ServerApiHelper.InfuraBodyListener = object : ServerApiHelper.InfuraBodyListener {
+ val infuraBodyListener: ServerApiInfura.InfuraBodyListener = object : ServerApiInfura.InfuraBodyListener {
override fun onSuccess(method: String, infuraResponse: InfuraResponse) {
when (method) {
- ServerApiHelper.INFURA_ETH_SEND_RAW_TRANSACTION -> {
+ ServerApiInfura.INFURA_ETH_SEND_RAW_TRANSACTION -> {
if (infuraResponse.result.isEmpty())
finishWithError("Rejected by node: " + infuraResponse.error)
else {
@@ -88,13 +88,13 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
override fun onFail(method: String, message: String) {
when (method) {
- ServerApiHelper.INFURA_ETH_SEND_RAW_TRANSACTION -> {
+ ServerApiInfura.INFURA_ETH_SEND_RAW_TRANSACTION -> {
finishWithError(message)
}
}
}
}
- serverApiHelper.setInfuraResponse(infuraBodyListener)
+ serverApiInfura.setInfuraResponse(infuraBodyListener)
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
@@ -132,14 +132,14 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
private fun requestInfura(method: String, contract: String) {
if (UtilHelper.isOnline(this)) {
- serverApiHelper.infura(method, 67, ctx.card!!.wallet, contract, tx)
+ serverApiInfura.infura(method, 67, ctx.card!!.wallet, contract, tx)
} else
finishWithError(getString(R.string.no_connection))
}
private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) {
if (UtilHelper.isOnline(this)) {
- serverApiHelperElectrum.electrumRequestData(card, electrumRequest)
+ serverApiElectrum.electrumRequestData(card, electrumRequest)
} else
finishWithError(getString(R.string.no_connection))
}
diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt
index 5a66ea71a2..6aeca1f8de 100644
--- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt
+++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt
@@ -19,16 +19,23 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
+import com.tangem.data.db.LocalStorage
+import com.tangem.data.db.PINStorage
import com.tangem.data.network.ElectrumRequest
-import com.tangem.data.network.ServerApiHelper
-import com.tangem.data.network.ServerApiHelperElectrum
+import com.tangem.data.network.ServerApiCommon
+import com.tangem.data.network.ServerApiElectrum
+import com.tangem.data.network.ServerApiInfura
import com.tangem.data.network.model.CardVerifyAndGetInfo
import com.tangem.data.network.model.InfuraResponse
import com.tangem.data.nfc.VerifyCardTask
import com.tangem.domain.cardReader.CardProtocol
import com.tangem.domain.cardReader.NfcManager
import com.tangem.domain.wallet.*
-import com.tangem.domain.wallet.BitcoinCash.BtcCashEngine
+import com.tangem.domain.wallet.btc.BtcData
+import com.tangem.domain.wallet.eth.EthData
+import com.tangem.domain.wallet.token.TokenData
+import com.tangem.domain.wallet.token.TokenEngine
+import com.tangem.domain.wallet.bch.BtcCashEngine
import com.tangem.presentation.activity.*
import com.tangem.presentation.dialog.NoExtendedLengthSupportDialog
import com.tangem.presentation.dialog.PINSwapWarningDialog
@@ -59,12 +66,11 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
private var nfcManager: NfcManager? = null
- private var serverApiHelper: ServerApiHelper = ServerApiHelper()
- private var serverApiHelperElectrum: ServerApiHelperElectrum = ServerApiHelperElectrum()
+ private var serverApiCommon: ServerApiCommon = ServerApiCommon()
+ private var serverApiInfura: ServerApiInfura = ServerApiInfura()
+ private var serverApiElectrum: ServerApiElectrum = ServerApiElectrum()
private var singleToast: Toast? = null
- //private var card: TangemCard? = null
- //private var engine: CoinEngine? = null
private lateinit var ctx: TangemContext
private var lastTag: Tag? = null
@@ -87,11 +93,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
ctx = TangemContext.loadFromBundle(activity, activity.intent.extras)
-// card = TangemCard(activity.intent.getStringExtra(TangemCard.EXTRA_UID))
-// card!!.loadFromBundle(activity.intent.extras.getBundle(TangemCard.EXTRA_CARD))
-//
-// engine = CoinEngineFactory.create(activity, card!!, activity.intent.extras.getBundle(CoinEngine.EXTRA_ENGINE))
-
lastTag = activity.intent.getParcelableExtra(MainActivity.EXTRA_LAST_DISCOVERED_TAG)
localStorage = LocalStorage(activity)
@@ -121,7 +122,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
// set listeners
srl!!.setOnRefreshListener { refresh() }
btnLookup.setOnClickListener {
- val engine=CoinEngineFactory.create(ctx)
+ val engine = CoinEngineFactory.create(ctx)
val browserIntent = Intent(Intent.ACTION_VIEW, engine!!.shareWalletUriExplorer)
startActivity(browserIntent)
}
@@ -137,7 +138,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
when (items[which]) {
getString(R.string.in_app) -> {
try {
- val engine=CoinEngineFactory.create(ctx)
+ val engine = CoinEngineFactory.create(ctx)
val intent = Intent(Intent.ACTION_VIEW, engine!!.shareWalletUri)
intent.addCategory(Intent.CATEGORY_DEFAULT)
startActivity(intent)
@@ -149,11 +150,11 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
doShareWallet(true)
}
getString(R.string.load_via_qr) -> {
- val engine=CoinEngineFactory.create(ctx)
+ val engine = CoinEngineFactory.create(ctx)
ShowQRCodeDialog.show(activity, engine!!.shareWalletUri.toString())
}
// getString(R.string.via_cryptonit2) -> {
-// val intent = Intent(ctx, PrepareCryptonitOtherAPIWithdrawalActivity::class.java)
+// val intent = Intent(ctx, PrepareCryptonitOtherApiWithdrawalActivity::class.java)
// intent.putExtra("UID", card!!.uid)
// intent.putExtra("Card", card!!.asBundle)
// startActivityForResult(intent, REQUEST_CODE_RECEIVE_PAYMENT)
@@ -178,7 +179,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
dlg.window.attributes = wlp
} else {
try {
- val engine=CoinEngineFactory.create(ctx)
+ val engine = CoinEngineFactory.create(ctx)
val intent = Intent(Intent.ACTION_VIEW, engine!!.shareWalletUri)
intent.addCategory(Intent.CATEGORY_DEFAULT)
startActivity(intent)
@@ -198,7 +199,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
startActivity(intent)
}
btnExtract.setOnClickListener {
- val engine=CoinEngineFactory.create(ctx)
+ val engine = CoinEngineFactory.create(ctx)
if (UtilHelper.isOnline(activity)) {
if (!engine!!.isExtractPossible)
showSingleToast(ctx.message)
@@ -214,7 +215,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
// request electrum listener
- val electrumBodyListener: ServerApiHelperElectrum.ElectrumRequestDataListener = object : ServerApiHelperElectrum.ElectrumRequestDataListener {
+ val electrumBodyListener: ServerApiElectrum.ElectrumRequestDataListener = object : ServerApiElectrum.ElectrumRequestDataListener {
override fun onSuccess(electrumRequest: ElectrumRequest?) {
if (electrumRequest!!.isMethod(ElectrumRequest.METHOD_GetBalance)) {
try {
@@ -224,7 +225,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
ctx.coinData!!.isBalanceReceived = true
(ctx.coinData!! as BtcData).setBalanceConfirmed(confBalance)
(ctx.coinData!! as BtcData).balanceUnconfirmed = unconfirmedBalance
- (ctx.coinData!! as BtcData).validationNodeDescription = serverApiHelperElectrum.validationNodeDescription
+ (ctx.coinData!! as BtcData).validationNodeDescription = serverApiElectrum.validationNodeDescription
} catch (e: JSONException) {
e.printStackTrace()
Log.e(TAG, "FAIL METHOD_GetBalance JSONException")
@@ -288,13 +289,13 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
}
- serverApiHelperElectrum.setElectrumRequestData(electrumBodyListener)
+ serverApiElectrum.setElectrumRequestData(electrumBodyListener)
// request infura listener
- val infuraBodyListener: ServerApiHelper.InfuraBodyListener = object : ServerApiHelper.InfuraBodyListener {
+ val infuraBodyListener: ServerApiInfura.InfuraBodyListener = object : ServerApiInfura.InfuraBodyListener {
override fun onSuccess(method: String, infuraResponse: InfuraResponse) {
when (method) {
- ServerApiHelper.INFURA_ETH_GET_BALANCE -> {
+ ServerApiInfura.INFURA_ETH_GET_BALANCE -> {
var balanceCap = infuraResponse.result
balanceCap = balanceCap.substring(2)
val l = BigInteger(balanceCap, 16)
@@ -305,8 +306,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
// (ctx.coinData!! as EthData).balanceUnconfirmed = 0L
if (ctx.blockchain != Blockchain.Token) {
(ctx.coinData!! as EthData).isBalanceReceived = true
- (ctx.coinData!! as EthData).balanceInInternalUnits = CoinEngine.InternalAmount(l.toBigDecimal(),"wei")
- }else{
+ (ctx.coinData!! as EthData).balanceInInternalUnits = CoinEngine.InternalAmount(l.toBigDecimal(), "wei")
+ } else {
(ctx.coinData!! as TokenData).isBalanceReceived = true
//(ctx.coinData!! as TokenData).balanceInInternalUnits = CoinEngine.InternalAmount(l.toBigDecimal(),ctx.card.tokenSymbol)
(ctx.coinData!! as TokenData).balanceAlterInInternalUnits = CoinEngine.InternalAmount(l.toBigDecimal(), "wei")
@@ -315,7 +316,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
// Log.i("$TAG eth_get_balance", balanceCap)
}
- ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT -> {
+ ServerApiInfura.INFURA_ETH_GET_TRANSACTION_COUNT -> {
var nonce = infuraResponse.result
nonce = nonce.substring(2)
val count = BigInteger(nonce, 16)
@@ -325,7 +326,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
// Log.i("$TAG eth_getTransCount", nonce)
}
- ServerApiHelper.INFURA_ETH_GET_PENDING_COUNT -> {
+ ServerApiInfura.INFURA_ETH_GET_PENDING_COUNT -> {
var pending = infuraResponse.result
pending = pending.substring(2)
val count = BigInteger(pending, 16)
@@ -334,7 +335,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
// Log.i("$TAG eth_getPendingTxCount", pending)
}
- ServerApiHelper.INFURA_ETH_CALL -> {
+ ServerApiInfura.INFURA_ETH_CALL -> {
try {
var balanceCap = infuraResponse.result
balanceCap = balanceCap.substring(2)
@@ -350,18 +351,18 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
// requestCounter--
// if (requestCounter == 0) srl!!.isRefreshing = false
//
-// requestInfura(ServerApiHelper.INFURA_ETH_GET_BALANCE, "")
-// requestInfura(ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT, "")
-// requestInfura(ServerApiHelper.INFURA_ETH_GET_PENDING_COUNT, "")
+// requestInfura(ServerApiCommon.INFURA_ETH_GET_BALANCE, "")
+// requestInfura(ServerApiCommon.INFURA_ETH_GET_TRANSACTION_COUNT, "")
+// requestInfura(ServerApiCommon.INFURA_ETH_GET_PENDING_COUNT, "")
// return
// }
- (ctx.coinData!! as EthData).balanceInInternalUnits = CoinEngine.InternalAmount(l.toBigDecimal(),ctx.card.tokenSymbol)
+ (ctx.coinData!! as EthData).balanceInInternalUnits = CoinEngine.InternalAmount(l.toBigDecimal(), ctx.card.tokenSymbol)
// Log.i("$TAG eth_call", balanceCap)
- requestInfura(ServerApiHelper.INFURA_ETH_GET_BALANCE, "")
- requestInfura(ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT, "")
- requestInfura(ServerApiHelper.INFURA_ETH_GET_PENDING_COUNT, "")
+ requestInfura(ServerApiInfura.INFURA_ETH_GET_BALANCE, "")
+ requestInfura(ServerApiInfura.INFURA_ETH_GET_TRANSACTION_COUNT, "")
+ requestInfura(ServerApiInfura.INFURA_ETH_GET_PENDING_COUNT, "")
} catch (e: JSONException) {
e.printStackTrace()
} catch (e: NumberFormatException) {
@@ -371,7 +372,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
}
- ServerApiHelper.INFURA_ETH_SEND_RAW_TRANSACTION -> {
+ ServerApiInfura.INFURA_ETH_SEND_RAW_TRANSACTION -> {
try {
var hashTX: String
try {
@@ -406,10 +407,10 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
}
- serverApiHelper.setInfuraResponse(infuraBodyListener)
+ serverApiInfura.setInfuraResponse(infuraBodyListener)
// request card verify and get info listener
- val cardVerifyAndGetInfoListener: ServerApiHelper.CardVerifyAndGetInfoListener = object : ServerApiHelper.CardVerifyAndGetInfoListener {
+ val cardVerifyAndGetInfoListener: ServerApiCommon.CardVerifyAndGetInfoListener = object : ServerApiCommon.CardVerifyAndGetInfoListener {
override fun onSuccess(cardVerifyAndGetArtworkResponse: CardVerifyAndGetInfo.Response?) {
val result = cardVerifyAndGetArtworkResponse?.results!![0]
if (result.error != null) {
@@ -435,7 +436,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
if (result.artwork != null && localStorage.checkNeedUpdateArtwork(result.artwork)) {
Log.w(TAG, "Artwork '${result.artwork!!.id}' updated, need download")
- serverApiHelper.requestArtwork(result.artwork!!.id, result.artwork!!.getUpdateDate(), ctx.card!!)
+ serverApiCommon.requestArtwork(result.artwork!!.id, result.artwork!!.getUpdateDate(), ctx.card!!)
updateViews()
}
// Log.i(TAG, "setCardVerify " + it.results!![0].passed)
@@ -445,10 +446,10 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
}
- serverApiHelper.setCardVerifyAndGetInfoListener(cardVerifyAndGetInfoListener)
+ serverApiCommon.setCardVerifyAndGetInfoListener(cardVerifyAndGetInfoListener)
// request artwork listener
- val artworkListener: ServerApiHelper.ArtworkListener = object : ServerApiHelper.ArtworkListener {
+ val artworkListener: ServerApiCommon.ArtworkListener = object : ServerApiCommon.ArtworkListener {
override fun onSuccess(artworkId: String?, inputStream: InputStream?, updateDate: Date?) {
localStorage.updateArtwork(artworkId!!, inputStream!!, updateDate!!)
ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(ctx.card!!))
@@ -458,10 +459,10 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
}
- serverApiHelper.setArtworkListener(artworkListener)
+ serverApiCommon.setArtworkListener(artworkListener)
// request rate info listener
- serverApiHelper.setRateInfoData {
+ serverApiCommon.setRateInfoData {
val rate = it.priceUsd.toFloat()
ctx.coinData!!.rate = rate
ctx.coinData!!.rateAlter = rate
@@ -724,168 +725,160 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
fun updateViews() {
- try {
- if (timerHideErrorAndMessage != null) {
- timerHideErrorAndMessage!!.cancel()
- timerHideErrorAndMessage = null
- }
+ if (timerHideErrorAndMessage != null) {
+ timerHideErrorAndMessage!!.cancel()
+ timerHideErrorAndMessage = null
+ }
- if (ctx.error == null || ctx.error.isEmpty()) {
- tvError.visibility = View.GONE
- tvError.text = ""
- } else {
- tvError.visibility = View.VISIBLE
- tvError.text = ctx.error
- }
+ if (ctx.error == null || ctx.error.isEmpty()) {
+ tvError.visibility = View.GONE
+ tvError.text = ""
+ } else {
+ tvError.visibility = View.VISIBLE
+ tvError.text = ctx.error
+ }
- if (ctx.message == null || ctx.message.isEmpty()) {
- tvMessage!!.text = ""
- tvMessage!!.visibility = View.GONE
- } else {
- tvMessage!!.text = ctx.message
- tvMessage!!.visibility = View.VISIBLE
- }
+ if (ctx.message == null || ctx.message.isEmpty()) {
+ tvMessage!!.text = ""
+ tvMessage!!.visibility = View.GONE
+ } else {
+ tvMessage!!.text = ctx.message
+ tvMessage!!.visibility = View.VISIBLE
+ }
- if (srl!!.isRefreshing) {
- tvBalanceLine1.setTextColor(resources.getColor(R.color.primary))
- tvBalanceLine1.text = getString(R.string.verifying_in_blockchain)
- tvBalanceLine2.text = ""
- tvBalance.text = ""
- tvBalanceEquivalent.text = ""
- } else {
- val validator = BalanceValidator()
- validator.Check(ctx, false)
- tvBalanceLine1.setTextColor(ContextCompat.getColor(activity, validator.color))
- tvBalanceLine1.text = validator.firstLine
- tvBalanceLine2.text = validator.getSecondLine(false)
- }
+ if (srl!!.isRefreshing) {
+ tvBalanceLine1.setTextColor(resources.getColor(R.color.primary))
+ tvBalanceLine1.text = getString(R.string.verifying_in_blockchain)
+ tvBalanceLine2.text = ""
+ tvBalance.text = ""
+ tvBalanceEquivalent.text = ""
+ } else {
+ val validator = BalanceValidator()
+ validator.Check(ctx, false)
+ tvBalanceLine1.setTextColor(ContextCompat.getColor(activity, validator.color))
+ tvBalanceLine1.text = validator.firstLine
+ tvBalanceLine2.text = validator.getSecondLine(false)
+ }
- val engine=CoinEngineFactory.create(ctx)
- if (engine!!.hasBalanceInfo() || ctx.card!!.offlineBalance == null) {
- val html = Html.fromHtml(engine!!.balanceHTML)
- tvBalance.text = html
- // TODO???
- tvBalanceEquivalent.text = engine!!.balanceEquivalent
- } else {
- // TODO
- val html = Html.fromHtml(engine!!.offlineBalanceHTML)
- tvBalance.text = html
- }
+ val engine = CoinEngineFactory.create(ctx)
+ if (engine!!.hasBalanceInfo() || ctx.card!!.offlineBalance == null) {
+ val html = Html.fromHtml(engine.balanceHTML)
+ tvBalance.text = html
+ // TODO???
+ tvBalanceEquivalent.text = engine.balanceEquivalent
+ } else {
+ // TODO
+ val html = Html.fromHtml(engine.offlineBalanceHTML)
+ tvBalance.text = html
+ }
- tvWallet.text = ctx.card!!.wallet
+ tvWallet.text = ctx.card!!.wallet
// tvBlockchain.text = card!!.blockchainName
- if (ctx.card!!.tokenSymbol.length > 1) {
- val html = Html.fromHtml(ctx.card!!.blockchainName)
- tvBlockchain.text = html
- } else
- tvBlockchain.text = ctx.card!!.blockchainName
+ if (ctx.card!!.tokenSymbol.length > 1) {
+ val html = Html.fromHtml(ctx.card!!.blockchainName)
+ tvBlockchain.text = html
+ } else
+ tvBlockchain.text = ctx.card!!.blockchainName
- if (engine!!.hasBalanceInfo()) {
- btnExtract.isEnabled = true
- btnExtract.backgroundTintList = activeColor
- } else {
- btnExtract.isEnabled = false
- btnExtract.backgroundTintList = inactiveColor
- }
-
- ctx.error = null
- ctx.message = null
-
- } catch (e: Exception) {
- e.printStackTrace()
+ if (engine.hasBalanceInfo()) {
+ btnExtract.isEnabled = true
+ btnExtract.backgroundTintList = activeColor
+ } else {
+ btnExtract.isEnabled = false
+ btnExtract.backgroundTintList = inactiveColor
}
+
+ ctx.error = null
+ ctx.message = null
}
private fun refresh() {
- if ((srl == null) || (ctx.card == null)) return;
- try {
- // clear all card data and request again
- srl!!.isRefreshing = true
- ctx.coinData.clearInfo();
- ctx.error = null
- ctx.message = null
- requestCounter = 0
+ if (ctx.card == null) return
- updateViews()
+ // clear all card data and request again
+ srl?.isRefreshing = true
+ ctx.coinData.clearInfo()
+ ctx.error = null
+ ctx.message = null
+ requestCounter = 0
- requestVerifyAndGetInfo()
+ updateViews()
+
+ requestVerifyAndGetInfo()
// Bitcoin
- if (ctx.blockchain == Blockchain.Bitcoin) {
+ if (ctx.blockchain == Blockchain.Bitcoin || ctx.blockchain == Blockchain.BitcoinTestNet) {
ctx.coinData.setIsBalanceEqual(true)
- requestElectrum(ElectrumRequest.checkBalance(ctx.card!!.wallet))
- requestElectrum(ElectrumRequest.listUnspent(ctx.card!!.wallet))
- requestRateInfo("bitcoin")
- }
+ requestElectrum(ElectrumRequest.checkBalance(ctx.card!!.wallet))
+ requestElectrum(ElectrumRequest.listUnspent(ctx.card!!.wallet))
+ requestRateInfo("bitcoin")
+ }
// BitcoinCash
else if (ctx.blockchain == Blockchain.BitcoinCash) {
ctx.coinData.setIsBalanceEqual(true)
val engine = CoinEngineFactory.create(ctx)
- requestElectrum(ElectrumRequest.checkBalance((engine as BtcCashEngine).convertToLegacyAddress(ctx.card!!.wallet)))
- requestElectrum(ElectrumRequest.listUnspent((engine as BtcCashEngine).convertToLegacyAddress(ctx.card!!.wallet)))
- requestRateInfo("bitcoin-cash")
- }
+ requestElectrum(ElectrumRequest.checkBalance((engine as BtcCashEngine).convertToLegacyAddress(ctx.card!!.wallet)))
+ requestElectrum(ElectrumRequest.listUnspent((engine as BtcCashEngine).convertToLegacyAddress(ctx.card!!.wallet)))
+ requestRateInfo("bitcoin-cash")
+ }
- // Ethereum
- else if (ctx.blockchain == Blockchain.Ethereum || ctx.blockchain == Blockchain.EthereumTestNet) {
- requestInfura(ServerApiHelper.INFURA_ETH_GET_BALANCE, "")
- requestInfura(ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT, "")
- requestInfura(ServerApiHelper.INFURA_ETH_GET_PENDING_COUNT, "")
- requestRateInfo("ethereum")
- }
+ // Ethereum
+ else if (ctx.blockchain == Blockchain.Ethereum || ctx.blockchain == Blockchain.EthereumTestNet) {
+ requestInfura(ServerApiInfura.INFURA_ETH_GET_BALANCE, "")
+ requestInfura(ServerApiInfura.INFURA_ETH_GET_TRANSACTION_COUNT, "")
+ requestInfura(ServerApiInfura.INFURA_ETH_GET_PENDING_COUNT, "")
+ requestRateInfo("ethereum")
+ }
- // Token
- else if (ctx.blockchain == Blockchain.Token) {
- val engine = CoinEngineFactory.create(ctx)
- requestInfura(ServerApiHelper.INFURA_ETH_CALL, (engine as TokenEngine).getContractAddress(ctx.card))
- requestRateInfo("ethereum")
- }
- } catch (e: Exception) {
- e.printStackTrace()
+ // Token
+ else if (ctx.blockchain == Blockchain.Token) {
+ val engine = CoinEngineFactory.create(ctx)
+ requestInfura(ServerApiInfura.INFURA_ETH_CALL, (engine as TokenEngine).getContractAddress(ctx.card))
+ requestRateInfo("ethereum")
}
}
private fun requestElectrum(electrumRequest: ElectrumRequest) {
if (UtilHelper.isOnline(activity!!)) {
requestCounter++
- serverApiHelperElectrum.electrumRequestData(ctx.card, electrumRequest)
+ serverApiElectrum.electrumRequestData(ctx.card, electrumRequest)
} else {
Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
- srl!!.isRefreshing = false
+ srl?.isRefreshing = false
}
}
private fun requestInfura(method: String, contract: String) {
if (UtilHelper.isOnline(activity)) {
requestCounter++
- serverApiHelper.infura(method, 67, ctx.card!!.wallet, contract, "")
+ serverApiInfura.infura(method, 67, ctx.card!!.wallet, contract, "")
} else {
Toast.makeText(activity, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
- srl!!.isRefreshing = false
+ srl?.isRefreshing = false
}
}
private fun requestVerifyAndGetInfo() {
if (UtilHelper.isOnline(activity)) {
if ((ctx.card!!.isOnlineVerified == null || !ctx.card!!.isOnlineVerified)) {
- serverApiHelper.cardVerifyAndGetInfo(ctx.card)
+ serverApiCommon.cardVerifyAndGetInfo(ctx.card)
}
} else {
Toast.makeText(activity, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
- srl!!.isRefreshing = false
+ srl?.isRefreshing = false
}
}
private fun requestRateInfo(cryptoId: String) {
if (UtilHelper.isOnline(activity)) {
- serverApiHelper.rateInfoData(cryptoId)
+ serverApiCommon.rateInfoData(cryptoId)
} else {
Toast.makeText(activity, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
- srl!!.isRefreshing = false
+ srl?.isRefreshing = false
}
}
diff --git a/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt b/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt
index 7e69ae0d5b..04677512e6 100644
--- a/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt
+++ b/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt
@@ -13,6 +13,7 @@ import android.view.View
import android.view.ViewGroup
import android.widget.PopupMenu
import android.widget.Toast
+import com.tangem.data.db.PINStorage
import com.tangem.domain.cardReader.NfcManager
import com.tangem.domain.wallet.*
import com.tangem.presentation.activity.CreateNewWalletActivity
@@ -285,7 +286,7 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback {
val engine = CoinEngineFactory.create(ctx)
- tvInputs.text = engine.unspentInputsDescription
+ tvInputs.text = engine!!.unspentInputsDescription
ivBlockchain.setImageResource(Blockchain.getLogoImageResource(ctx.card!!.blockchainID, ctx.card!!.tokenSymbol))
@@ -467,7 +468,7 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback {
private fun doPurge() {
requestPIN2Count = 0
val engine=CoinEngineFactory.create(ctx)
- if (!engine.hasBalanceInfo()) {
+ if (!engine!!.hasBalanceInfo()) {
return
} else if (engine.isBalanceNotZero) {
Toast.makeText(context, R.string.cannot_erase_wallet_with_non_zero_balance, Toast.LENGTH_LONG).show()
diff --git a/app/src/main/java/com/tangem/presentation/viewmodel/BaseViewModel.kt b/app/src/main/java/com/tangem/presentation/viewmodel/BaseViewModel.kt
index 959bc6d6d3..ea21989952 100644
--- a/app/src/main/java/com/tangem/presentation/viewmodel/BaseViewModel.kt
+++ b/app/src/main/java/com/tangem/presentation/viewmodel/BaseViewModel.kt
@@ -17,7 +17,7 @@ package com.tangem.presentation.viewmodel
import android.arch.lifecycle.MutableLiveData
import android.arch.lifecycle.ViewModel
-import com.dmmatrix.epro.core.exception.Failure
+import com.tangem.data.network.exception.Failure
/**
* Base ViewModel class with default Failure handling.
diff --git a/app/src/main/java/com/tangem/presentation/viewmodel/LoadedWalletViewModel.kt b/app/src/main/java/com/tangem/presentation/viewmodel/LoadedWalletViewModel.kt
index 46b4defd2c..6442aa5778 100644
--- a/app/src/main/java/com/tangem/presentation/viewmodel/LoadedWalletViewModel.kt
+++ b/app/src/main/java/com/tangem/presentation/viewmodel/LoadedWalletViewModel.kt
@@ -1,7 +1,7 @@
package com.tangem.presentation.viewmodel
import android.arch.lifecycle.MutableLiveData
-import com.dmmatrix.epro.core.exception.Failure
+import com.tangem.data.network.exception.Failure
class LoadedWalletViewModel : BaseViewModel() {
diff --git a/app/src/main/java/com/tangem/util/DerEncodingUtil.java b/app/src/main/java/com/tangem/util/DerEncodingUtil.java
index 8f03bb06b2..a7894d6e44 100644
--- a/app/src/main/java/com/tangem/util/DerEncodingUtil.java
+++ b/app/src/main/java/com/tangem/util/DerEncodingUtil.java
@@ -1,6 +1,6 @@
package com.tangem.util;
-import com.tangem.domain.wallet.BitcoinOutputStream;
+import com.tangem.domain.wallet.btc.BitcoinOutputStream;
import org.spongycastle.asn1.ASN1Integer;
import org.spongycastle.asn1.DERSequenceGenerator;
diff --git a/app/src/main/java/com/tangem/domain/wallet/DeviceName.java b/app/src/main/java/com/tangem/util/DeviceName.java
similarity index 99%
rename from app/src/main/java/com/tangem/domain/wallet/DeviceName.java
rename to app/src/main/java/com/tangem/util/DeviceName.java
index ef9ecf81d1..0879e7f674 100644
--- a/app/src/main/java/com/tangem/domain/wallet/DeviceName.java
+++ b/app/src/main/java/com/tangem/util/DeviceName.java
@@ -1,4 +1,4 @@
-package com.tangem.domain.wallet;
+package com.tangem.util;
/**
* Created by Ilia on 20.04.2018.
diff --git a/app/src/main/java/com/tangem/util/PhoneUtility.java b/app/src/main/java/com/tangem/util/PhoneUtility.java
index 9ea7beada5..9bb2f92515 100644
--- a/app/src/main/java/com/tangem/util/PhoneUtility.java
+++ b/app/src/main/java/com/tangem/util/PhoneUtility.java
@@ -2,8 +2,6 @@ package com.tangem.util;
import android.os.Build;
-import com.tangem.domain.wallet.DeviceName;
-
/**
* Created by Ilia on 20.04.2018.
*/
diff --git a/app/src/main/java/com/tangem/util/VerticalTextView.java b/app/src/main/java/com/tangem/util/VerticalTextView.java
deleted file mode 100644
index b6713ca0a4..0000000000
--- a/app/src/main/java/com/tangem/util/VerticalTextView.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.tangem.util;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.support.v7.widget.AppCompatTextView;
-import android.text.TextPaint;
-import android.util.AttributeSet;
-import android.view.Gravity;
-
-public class VerticalTextView extends AppCompatTextView {
- final boolean topDown;
-
- public VerticalTextView(Context context, AttributeSet attrs) {
- super(context, attrs);
- final int gravity = getGravity();
- if (Gravity.isVertical(gravity) && (gravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) {
- setGravity((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) | Gravity.TOP);
- topDown = false;
- } else {
- topDown = true;
- }
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(heightMeasureSpec, widthMeasureSpec);
- setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- TextPaint textPaint = getPaint();
- textPaint.setColor(getCurrentTextColor());
- textPaint.drawableState = getDrawableState();
-
- canvas.save();
-
- if (topDown) {
- canvas.translate(getWidth(), 0);
- canvas.rotate(90);
- } else {
- canvas.translate(0, getHeight());
- canvas.rotate(-90);
- }
-
- canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop());
-
- getLayout().draw(canvas);
- canvas.restore();
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_prepare_cryptonit_other_api_withdrawal.xml b/app/src/main/res/layout/activity_prepare_cryptonit_other_api_withdrawal.xml
index cac33ad2c1..7f6ebbfe11 100644
--- a/app/src/main/res/layout/activity_prepare_cryptonit_other_api_withdrawal.xml
+++ b/app/src/main/res/layout/activity_prepare_cryptonit_other_api_withdrawal.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="com.tangem.presentation.activity.PrepareCryptonitOtherAPIWithdrawalActivity">
+ tools:context="com.tangem.presentation.activity.PrepareCryptonitOtherApiWithdrawalActivity">