diff --git a/app/src/main/java/com/tangem/data/Blockchain.java b/app/src/main/java/com/tangem/data/Blockchain.java
index c9747e62f8..ed1ab10387 100644
--- a/app/src/main/java/com/tangem/data/Blockchain.java
+++ b/app/src/main/java/com/tangem/data/Blockchain.java
@@ -20,7 +20,7 @@ public enum Blockchain {
Rootstock("RSK", "RBTC", 1.0, R.drawable.tangem2, "RSK"),
RootstockToken("RskToken", "RBTC", 1.0, R.drawable.tangem2, "RSK"),
Cardano("CARDANO", "ADA", 1000000.0, R.drawable.tangem2, "Cardano"),
- Ripple ("XRP", "XRP", 1000000.0, R.drawable.ic_logo_xrp, "XRP"),
+ Ripple("XRP", "XRP", 1000000.0, R.drawable.ic_logo_xrp, "XRP"),
Binance("BINANCE", "BNB", 100000000.0, R.drawable.ic_logo_binance, "Binance"),
BinanceTestNet("BINANCE/test", "BNB", 100000000.0, R.drawable.ic_logo_binance, "Binance Testnet"),
Matic("MATIC", "MTX", 1.0, R.drawable.tangem2, "Matic"),
@@ -89,37 +89,18 @@ public enum Blockchain {
return mImageResource;
}
- public int getImageResource(android.content.Context context, String name) {
- if (name==null || name.isEmpty())
- return getImageResource();
-
- name = name.toLowerCase();
-
- int resourceId = context.getResources().getIdentifier(name + "_token", "drawable", context.getPackageName());
-
- if (resourceId <= 0)
- return R.drawable.ic_logo_ethereum;
- return resourceId;
- }
-
- public static int getLogoImageResource(String blockchainID, String symbolName) {
- switch (blockchainID) {
- case "BTC":
- return R.drawable.ic_logo_bitcoin;
-
- case "Token":
+ public int getLogoImageResource(String symbolName) {
+ switch (this) {
+ case Token:
if (symbolName.equals("SEED"))
return R.drawable.ic_logo_seed;
- else
- return R.drawable.ic_logo_ethereum;
-
- case "ETH":
- return R.drawable.ic_logo_ethereum;
-
- case "XLM":
- return R.drawable.ic_logo_stellar;
+ break;
+ case RootstockToken:
+ if (symbolName.equals("RIF"))
+ return R.drawable.ic_logo_rif;
}
- return R.drawable.tangem2;
+
+ return getImageResource();
}
}
diff --git a/app/src/main/java/com/tangem/ui/fragment/VerifyCardFragment.kt b/app/src/main/java/com/tangem/ui/fragment/VerifyCardFragment.kt
index 1272905501..7e26ac59ae 100644
--- a/app/src/main/java/com/tangem/ui/fragment/VerifyCardFragment.kt
+++ b/app/src/main/java/com/tangem/ui/fragment/VerifyCardFragment.kt
@@ -281,7 +281,7 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
tvInputs.text = engine!!.unspentInputsDescription
- ivBlockchain.setImageResource(Blockchain.getLogoImageResource(ctx.card!!.blockchainID, ctx.card!!.tokenSymbol))
+ ivBlockchain.setImageResource(ctx.blockchain.getLogoImageResource(ctx.card!!.tokenSymbol))
var s = ""
for (signingM in ctx.card!!.allowedSigningMethod) {
diff --git a/app/src/main/java/com/tangem/wallet/btc/BtcData.java b/app/src/main/java/com/tangem/wallet/btc/BtcData.java
index 0d0eca1d85..28648010df 100644
--- a/app/src/main/java/com/tangem/wallet/btc/BtcData.java
+++ b/app/src/main/java/com/tangem/wallet/btc/BtcData.java
@@ -15,7 +15,7 @@ public class BtcData extends CoinData {
super();
}
- private Long balanceConfirmed, balanceUnconfirmed;
+ protected Long balanceConfirmed, balanceUnconfirmed;
private boolean useBlockcypher = false;
diff --git a/app/src/main/java/com/tangem/wallet/ducatus/DucatusData.java b/app/src/main/java/com/tangem/wallet/ducatus/DucatusData.java
new file mode 100644
index 0000000000..ecb8e69561
--- /dev/null
+++ b/app/src/main/java/com/tangem/wallet/ducatus/DucatusData.java
@@ -0,0 +1,16 @@
+package com.tangem.wallet.ducatus;
+
+import com.tangem.wallet.CoinEngine;
+import com.tangem.wallet.btc.BtcData;
+
+import java.math.BigDecimal;
+
+public class DucatusData extends BtcData {
+ public CoinEngine.InternalAmount getBalanceInInternalUnits() {
+ if (balanceConfirmed != null) {
+ return new CoinEngine.InternalAmount(BigDecimal.valueOf(balanceConfirmed), "Satoshi");
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/app/src/main/java/com/tangem/wallet/ducatus/DucatusEngine.java b/app/src/main/java/com/tangem/wallet/ducatus/DucatusEngine.java
index 4a363c1dfb..d6fb31aad1 100644
--- a/app/src/main/java/com/tangem/wallet/ducatus/DucatusEngine.java
+++ b/app/src/main/java/com/tangem/wallet/ducatus/DucatusEngine.java
@@ -46,15 +46,15 @@ import io.reactivex.observers.DisposableSingleObserver;
public class DucatusEngine extends BtcEngine {
private static final String TAG = DucatusEngine.class.getSimpleName();
- public BtcData coinData = null;
+ public DucatusData coinData = null;
public DucatusEngine(TangemContext context) throws Exception {
- super(context);
+ this.ctx = context;
if (context.getCoinData() == null) {
- coinData = new BtcData();
+ coinData = new DucatusData();
context.setCoinData(coinData);
- } else if (context.getCoinData() instanceof BtcData) {
- coinData = (BtcData) context.getCoinData();
+ } else if (context.getCoinData() instanceof DucatusData) {
+ coinData = (DucatusData) context.getCoinData();
} else {
throw new Exception("Invalid type of Blockchain data for DucatusEngine");
}
@@ -380,7 +380,7 @@ public class DucatusEngine extends BtcEngine {
@Override
public CoinData createCoinData() {
- return new BtcData();
+ return new DucatusData();
}
@Override
diff --git a/app/src/main/java/com/tangem/wallet/flowDemo/FlowDemoEngine.kt b/app/src/main/java/com/tangem/wallet/flowDemo/FlowDemoEngine.kt
index 87e22d2162..b148c70fe9 100644
--- a/app/src/main/java/com/tangem/wallet/flowDemo/FlowDemoEngine.kt
+++ b/app/src/main/java/com/tangem/wallet/flowDemo/FlowDemoEngine.kt
@@ -7,14 +7,11 @@ import com.tangem.tangem_card.reader.CardProtocol.TangemException
import com.tangem.tangem_card.tasks.SignTask
import com.tangem.tangem_card.util.Util
import com.tangem.wallet.*
-import com.tangem.wallet.binance.client.domain.Account
import com.tangem.wallet.flowDemo.proto.Observation
import com.tangem.wallet.flowDemo.proto.ObserveServiceGrpc
import io.grpc.ManagedChannelBuilder
-import io.reactivex.Observable
import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
-import io.reactivex.functions.Function
import io.reactivex.observers.DisposableSingleObserver
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.TimeUnit
@@ -247,4 +244,8 @@ class FlowDemoEngine : CoinEngine {
override fun createCoinData(): CoinData {
return FlowDemoData()
}
+
+ override fun isNftToken(): Boolean {
+ return true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/wallet/xlm/XlmAssetEngine.java b/app/src/main/java/com/tangem/wallet/xlm/XlmAssetEngine.java
index eee75cd22c..06cfd560ef 100644
--- a/app/src/main/java/com/tangem/wallet/xlm/XlmAssetEngine.java
+++ b/app/src/main/java/com/tangem/wallet/xlm/XlmAssetEngine.java
@@ -109,8 +109,8 @@ public class XlmAssetEngine extends CoinEngine {
@Override
public boolean isBalanceNotZero() {
if (coinData == null) return false;
- return (coinData.getXlmBalance() != null && coinData.getXlmBalance().notZero() &&
- coinData.getAssetBalance() != null && coinData.getAssetBalance().notZero());
+ return (coinData.getXlmBalance() != null && coinData.getXlmBalance().notZero()) ||
+ (coinData.getAssetBalance() != null && coinData.getAssetBalance().notZero());
}
@Override
@@ -128,6 +128,8 @@ public class XlmAssetEngine extends CoinEngine {
ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) {
ctx.setMessage(R.string.loaded_wallet_message_wait);
+ } else if (coinData.getXlmBalance() == null || coinData.getXlmBalance().isZero()) {
+ ctx.setMessage(ctx.getString(R.string.confirm_transaction_error_not_enough_xlm_for_fee));
} else {
return true;
}
@@ -259,7 +261,7 @@ public class XlmAssetEngine extends CoinEngine {
balanceValidator.setScore(100);
balanceValidator.setFirstLine(R.string.balance_validator_first_line_verified_balance);
balanceValidator.setSecondLine(R.string.balance_validator_second_line_confirmed_in_blockchain);
- if (coinData.getXlmBalance().isZero()) {
+ if (!isBalanceNotZero()) {
balanceValidator.setFirstLine(R.string.balance_validator_first_line_empty_wallet);
balanceValidator.setSecondLine(R.string.empty_string);
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 67cf1e495e..ce8a2776e1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -210,6 +210,7 @@
Cannot calculate fee! Wrong data received from the node
Please wait for confirmation of incoming transaction
Not enough ETH funds for fee
+ Not enough XLM funds for fee
Not enough RBTC funds for fee
Target account is not created! Send 1+ XLM to create it
PIN2 is required to sign the payment
diff --git a/tangem-sdk-old/src/main/res/drawable/ic_logo_rif.png b/tangem-sdk-old/src/main/res/drawable/ic_logo_rif.png
new file mode 100644
index 0000000000..3569ef0433
Binary files /dev/null and b/tangem-sdk-old/src/main/res/drawable/ic_logo_rif.png differ