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