diff --git a/app/src/main/java/com/tangem/ui/fragment/MainFragment.kt b/app/src/main/java/com/tangem/ui/fragment/MainFragment.kt
index ffd3d3f097..3c4b5285c5 100644
--- a/app/src/main/java/com/tangem/ui/fragment/MainFragment.kt
+++ b/app/src/main/java/com/tangem/ui/fragment/MainFragment.kt
@@ -7,7 +7,6 @@ import android.net.Uri
import android.nfc.NfcAdapter
import android.nfc.Tag
import android.nfc.tech.IsoDep
-import android.nfc.tech.Ndef
import android.nfc.tech.NfcV
import android.os.Bundle
import android.text.Spannable
@@ -55,7 +54,7 @@ import com.tangem.wallet.BuildConfig
import com.tangem.wallet.CoinEngineFactory
import com.tangem.wallet.R
import com.tangem.wallet.TangemContext
-import com.tangem.wallet.xlmtag.XlmTagEngine
+import com.tangem.wallet.xlmTag.XlmTagEngine
import kotlinx.android.synthetic.main.fragment_main.*
import kotlinx.android.synthetic.main.layout_touch_card.*
import kotlinx.coroutines.CoroutineScope
diff --git a/app/src/main/java/com/tangem/ui/fragment/additional/TagFragment.kt b/app/src/main/java/com/tangem/ui/fragment/additional/TagFragment.kt
index dd2d27594c..8514ccf37c 100644
--- a/app/src/main/java/com/tangem/ui/fragment/additional/TagFragment.kt
+++ b/app/src/main/java/com/tangem/ui/fragment/additional/TagFragment.kt
@@ -20,7 +20,7 @@ import com.tangem.ui.navigation.NavigationResultListener
import com.tangem.util.LOG
import com.tangem.util.UtilHelper
import com.tangem.wallet.*
-import com.tangem.wallet.xlmtag.XlmTagEngine
+import com.tangem.wallet.xlmTag.XlmTagEngine
import kotlinx.android.synthetic.main.fr_loaded_wallet.*
import kotlinx.android.synthetic.main.layout_btn_details.*
import kotlinx.android.synthetic.main.layout_tangem_card.*
@@ -67,7 +67,7 @@ class TagFragment : BaseFragment(), NavigationResultListener {
btnExtract.backgroundTintList =
ContextCompat.getColorStateList(requireContext(), R.color.btn_dark)
- ivTangemCard.setImageResource(R.drawable.card_default_nft)
+ ivTangemCard.setImageResource(R.drawable.card_tgslix)
tvBalance.setSingleLine(!engine.needMultipleLinesForBalance())
tvWallet.text = ctx.coinData.wallet
@@ -78,7 +78,6 @@ class TagFragment : BaseFragment(), NavigationResultListener {
srl?.setOnRefreshListener { refresh(true) }
requestBalanceAndUnspentTransactions()
-// update()
}
@@ -129,14 +128,13 @@ class TagFragment : BaseFragment(), NavigationResultListener {
else -> tvBalance.text = ""
}
- if (ctx.card!!.tokenSymbol.length > 1) {
- @Suppress("DEPRECATION") val html = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- Html.fromHtml(ctx.blockchainName, Html.FROM_HTML_MODE_LEGACY)
- else
- Html.fromHtml(ctx.blockchainName)
- tvBlockchain.text = html
- } else
- tvBlockchain.text = ctx.blockchainName
+
+ @Suppress("DEPRECATION") val html = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
+ Html.fromHtml(ctx.blockchainName, Html.FROM_HTML_MODE_LEGACY)
+ else
+ Html.fromHtml(ctx.blockchainName)
+ tvBlockchain.text = html
+
}
diff --git a/app/src/main/java/com/tangem/wallet/CoinEngineFactory.kt b/app/src/main/java/com/tangem/wallet/CoinEngineFactory.kt
index c65b0da0e2..1f888ee616 100644
--- a/app/src/main/java/com/tangem/wallet/CoinEngineFactory.kt
+++ b/app/src/main/java/com/tangem/wallet/CoinEngineFactory.kt
@@ -19,7 +19,7 @@ import com.tangem.wallet.token.TokenEngine
import com.tangem.wallet.tezos.TezosEngine
import com.tangem.wallet.xlm.XlmAssetEngine
import com.tangem.wallet.xlm.XlmEngine
-import com.tangem.wallet.xlmtag.XlmTagEngine
+import com.tangem.wallet.xlmTag.XlmTagEngine
import com.tangem.wallet.xrp.XrpEngine
/**
diff --git a/app/src/main/java/com/tangem/wallet/TangemContext.java b/app/src/main/java/com/tangem/wallet/TangemContext.java
index 07cb229329..1f71dc9873 100644
--- a/app/src/main/java/com/tangem/wallet/TangemContext.java
+++ b/app/src/main/java/com/tangem/wallet/TangemContext.java
@@ -55,14 +55,16 @@ public class TangemContext {
public String getBlockchainName() {
Blockchain blockchain = getBlockchain();
if (blockchain == Blockchain.Token || blockchain == Blockchain.RootstockToken) {
- String token = card.getTokenSymbol();
- return token + "
" + getBlockchain().getOfficialName() + " smart contract token";
+ return card.getTokenSymbol()+ "
" + getBlockchain().getOfficialName() + " smart contract token";
}
if (blockchain == Blockchain.NftToken) {
- return card.getTokenSymbol().substring(4) + "
" + getBlockchain().getOfficialName() + " NFT token";
+ return card.getTokenSymbol().substring(4) + "
" + getBlockchain().getOfficialName() + " non-fungible token";
}
if (blockchain == Blockchain.StellarAsset) {
- return card.getTokenSymbol() + "
" + getBlockchain().getOfficialName() + " asset";
+ return card.getTokenSymbol() + "
" + getBlockchain().getOfficialName() + " asset";
+ }
+ if (blockchain == Blockchain.StellarTag) {
+ return "TANGEM TAG
"+ getBlockchain().getOfficialName() + " non-fungible token ";
}
return blockchain.getOfficialName();
}
diff --git a/app/src/main/java/com/tangem/wallet/xlm/XlmEngine.java b/app/src/main/java/com/tangem/wallet/xlm/XlmEngine.java
index c707517abc..297991bd3f 100644
--- a/app/src/main/java/com/tangem/wallet/xlm/XlmEngine.java
+++ b/app/src/main/java/com/tangem/wallet/xlm/XlmEngine.java
@@ -76,7 +76,7 @@ public class XlmEngine extends CoinEngine {
public String getBalanceHTML() {
Amount balance = getBalance();
if (balance != null) {
- return " " + balance.toDescriptionString(getDecimals()) + "
+ " + coinData.getReserve().toDescriptionString(getDecimals()) + " reserve";
+ return " " + balance.toDescriptionString(getDecimals()) + "
+ " + coinData.getReserve().toDescriptionString(getDecimals()) + " reserve1";
} else {
return "";
}
@@ -243,7 +243,7 @@ public class XlmEngine extends CoinEngine {
// return;
// }
- if ((ctx.getCard().getOfflineBalance() != null) && !coinData.isBalanceReceived() && (ctx.getCard().getRemainingSignatures() == ctx.getCard().getMaxSignatures()) && coinData.getBalance().notZero()) {
+ if ((ctx.getCard().getOfflineBalance() != null) && !coinData.isBalanceReceived() && (ctx.getCard().getRemainingSignatures() == ctx.getCard().getMaxSignatures())) {
balanceValidator.setScore(80);
balanceValidator.setFirstLine(R.string.balance_validator_first_line_verified_offline);
balanceValidator.setSecondLine(R.string.balance_validator_second_line_internet_to_get_balance);
diff --git a/app/src/main/java/com/tangem/wallet/xlmtag/XlmTagData.kt b/app/src/main/java/com/tangem/wallet/xlmTag/XlmTagData.kt
similarity index 99%
rename from app/src/main/java/com/tangem/wallet/xlmtag/XlmTagData.kt
rename to app/src/main/java/com/tangem/wallet/xlmTag/XlmTagData.kt
index bdd8f4e3af..e8287ccd86 100644
--- a/app/src/main/java/com/tangem/wallet/xlmtag/XlmTagData.kt
+++ b/app/src/main/java/com/tangem/wallet/xlmTag/XlmTagData.kt
@@ -1,4 +1,4 @@
-package com.tangem.wallet.xlmtag
+package com.tangem.wallet.xlmTag
import android.os.Bundle
import android.util.Log
diff --git a/app/src/main/java/com/tangem/wallet/xlmtag/XlmTagEngine.kt b/app/src/main/java/com/tangem/wallet/xlmTag/XlmTagEngine.kt
similarity index 78%
rename from app/src/main/java/com/tangem/wallet/xlmtag/XlmTagEngine.kt
rename to app/src/main/java/com/tangem/wallet/xlmTag/XlmTagEngine.kt
index 4fe5de60ca..3a4548442d 100644
--- a/app/src/main/java/com/tangem/wallet/xlmtag/XlmTagEngine.kt
+++ b/app/src/main/java/com/tangem/wallet/xlmTag/XlmTagEngine.kt
@@ -1,4 +1,4 @@
-package com.tangem.wallet.xlmtag
+package com.tangem.wallet.xlmTag
import android.net.Uri
import android.os.StrictMode
@@ -53,12 +53,18 @@ class XlmTagEngine : CoinEngine {
}
override fun getBalanceHTML(): String {
- return if (hasBalanceInfo() && isBalanceNotZero && coinData!!.fundsFromTrustedSource) {
- ctx.getString(R.string.tag_genuine)
- } else if (coinData!!.fundsSentToTrustedSource) {
- ctx.getString(R.string.tag_claimed)
+ return if (hasBalanceInfo()) {
+ if (coinData!!.fundsFromTrustedSource) {
+// if (coinData!!.fundsSentToTrustedSource) { //TODO: shut down for example tags to appear genuine, turn on for production
+// ctx.getString(R.string.tag_claimed)
+// } else {
+ ctx.getString(R.string.tag_genuine)
+// }
+ } else {
+ ctx.getString(R.string.tag_not_genuine)
+ }
} else {
- ctx.getString(R.string.tag_not_genuine)
+ ""
}
}
@@ -72,7 +78,7 @@ class XlmTagEngine : CoinEngine {
}
override fun hasBalanceInfo(): Boolean {
- return if (coinData == null) false else coinData!!.getBalance() != null || coinData!!.isError404
+ return if (coinData == null) false else coinData!!.isBalanceReceived
}
override fun isExtractPossible(): Boolean {
@@ -130,43 +136,30 @@ class XlmTagEngine : CoinEngine {
}
override fun validateBalance(balanceValidator: BalanceValidator): Boolean {
- return try {
- if (ctx.card.offlineBalance == null && !ctx.coinData.isBalanceReceived || !ctx.coinData.isBalanceReceived && ctx.card.remainingSignatures != ctx.card.maxSignatures) {
- if (coinData!!.isError404) {
- balanceValidator.setScore(0)
- balanceValidator.firstLine = R.string.balance_validator_first_line_no_account
- balanceValidator.setSecondLine(R.string.balance_validator_second_line_create_account_instruction)
- } else {
- balanceValidator.setScore(0)
- balanceValidator.firstLine = R.string.balance_validator_first_line_unknown_balance
- balanceValidator.setSecondLine(R.string.balance_validator_second_line_unverified_balance)
- return false
- }
+ try {
+ if (!hasBalanceInfo()) {
+ balanceValidator.setScore(0)
+ balanceValidator.firstLine = R.string.balance_validator_first_line_no_connection
+ balanceValidator.setSecondLine(R.string.balance_validator_second_line_authenticity_not_verified)
+ return false
}
-
- if (coinData!!.isBalanceReceived && coinData!!.isBalanceEqual) {
+ if (coinData!!.fundsFromTrustedSource) {
balanceValidator.setScore(100)
- balanceValidator.firstLine = R.string.balance_validator_first_line_verified_balance
- balanceValidator.setSecondLine(R.string.balance_validator_second_line_confirmed_in_blockchain)
- if (coinData!!.getBalance()!!.isZero) {
- balanceValidator.firstLine = R.string.balance_validator_first_line_empty_wallet
- balanceValidator.setSecondLine(R.string.empty_string)
- }
+ balanceValidator.firstLine = R.string.balance_validator_first_line_verified_in_blockchain
+ balanceValidator.setSecondLine(R.string.empty_string)
+ } else {
+ balanceValidator.setScore(0)
+ balanceValidator.firstLine = R.string.balance_validator_first_line_authenticity
+ balanceValidator.setSecondLine(R.string.empty_string)
}
-
- if (ctx.card.offlineBalance != null && !coinData!!.isBalanceReceived && ctx.card.remainingSignatures == ctx.card.maxSignatures && coinData!!.getBalance()!!.notZero()) {
- balanceValidator.setScore(80)
- balanceValidator.firstLine = R.string.balance_validator_first_line_verified_offline
- balanceValidator.setSecondLine(R.string.balance_validator_second_line_internet_to_get_balance)
- }
-
- true
+ return true
} catch (e: Exception) {
e.printStackTrace()
- false
+ return false
}
}
+
override fun getBalance(): Amount? {
return if (!hasBalanceInfo()) null else coinData!!.getBalance()!!
}
@@ -310,7 +303,7 @@ class XlmTagEngine : CoinEngine {
val accountKeyPair = KeyPair.fromAccountId(coinData!!.wallet)
try {
- var operationsPage = server.payments().forAccount(accountKeyPair).order(RequestBuilder.Order.DESC).execute()
+ var operationsPage = server.payments().forAccount(accountKeyPair).limit(200).order(RequestBuilder.Order.DESC).execute()
Log.e("Stellar", operationsPage.records.toString())
operations.addAll(operationsPage.records)
@@ -324,6 +317,8 @@ class XlmTagEngine : CoinEngine {
}
parsePayments(blockchainRequestsCallbacks)
+
+ CoroutineScope(Dispatchers.Main).launch { blockchainRequestsCallbacks.onComplete(!ctx.hasError()) }
} catch (e: Exception) {
if (e.message != null) {
ctx.error = e.message
@@ -342,53 +337,11 @@ class XlmTagEngine : CoinEngine {
Log.e("Stellar",
"fundsFromTrustedSource $coinData!!.fundsFromTrustedSource, " +
"fundsSentToTrustedSource $coinData!!.fundsSentToTrustedSource")
- blockchainRequestsCallbacks.onComplete(!ctx.hasError())
+ coinData!!.isBalanceReceived = true
}
override fun requestBalanceAndUnspentTransactions(blockchainRequestsCallbacks: BlockchainRequestsCallbacks) {
CoroutineScope(Dispatchers.IO).launch { requestPayments(blockchainRequestsCallbacks) }
- val serverApi = ServerApiStellar(Blockchain.Stellar)
- val listener: ServerApiStellar.Listener = object : ServerApiStellar.Listener {
- override fun onSuccess(request: StellarRequest.Base) {
- Log.i(TAG, "onSuccess: " + request.javaClass.simpleName)
- if (request is StellarRequest.Balance) {
- coinData!!.accountResponse = request.accountResponse
- coinData!!.validationNodeDescription = serverApi.currentURL
-
- blockchainRequestsCallbacks.onProgress()
- } else if (request is Ledgers) {
- coinData!!.setLedgerResponse(request.ledgerResponse)
- if (serverApi.isRequestsSequenceCompleted) {
- } else {
- blockchainRequestsCallbacks.onProgress()
- }
- } else {
- ctx.error = "Invalid request logic"
- blockchainRequestsCallbacks.onComplete(false)
- }
- }
-
- override fun onFail(request: StellarRequest.Base) {
- Log.i(TAG, "onFail: " + request.javaClass.simpleName + " " + request.error)
- if (request.errorResponse != null && request.errorResponse.code == 404) {
- coinData!!.isError404 = true
- } else {
- ctx.error = request.error
- }
- if (serverApi.isRequestsSequenceCompleted) {
- if (ctx.hasError()) {
- blockchainRequestsCallbacks.onComplete(false)
- } else {
- blockchainRequestsCallbacks.onComplete(true)
- }
- } else {
- blockchainRequestsCallbacks.onProgress()
- }
- }
- }
- serverApi.setListener(listener)
- serverApi.requestData(ctx, StellarRequest.Balance(coinData!!.wallet))
- serverApi.requestData(ctx, Ledgers())
}
@Throws(Exception::class)
@@ -463,7 +416,7 @@ class XlmTagEngine : CoinEngine {
private val multiplier = BigDecimal("10000000")
- const val OPERATIONS_LIMIT = 50
+ const val OPERATIONS_LIMIT = 200
private val TRUSTED_DESTINATION = "GAYPZMHFZERB42ONEJ4CY6ADDVTINEXMY6OZ5G6CLR4HHVKOSNJSZGMM"
private val TRUSTED_SOURCE = "GAZY7H4BWWEVB6QGB4RV3LW7DH5NO5CD5O6JCEQXA7N2UCGZSAPJFYW2"
}
diff --git a/server-android/src/main/java/com/tangem/server_android/data/LocalStorage.kt b/server-android/src/main/java/com/tangem/server_android/data/LocalStorage.kt
index 81dc1f368a..3fa43bfe6b 100644
--- a/server-android/src/main/java/com/tangem/server_android/data/LocalStorage.kt
+++ b/server-android/src/main/java/com/tangem/server_android/data/LocalStorage.kt
@@ -47,7 +47,7 @@ class LocalStorage
artworks = HashMap()
}
- if (artworks.count() < 31) {
+ if (artworks.count() < 32) {
// forceSave=true only on the last one
putResourceArtworkToCatalog(R.drawable.card_default, false)
putResourceArtworkToCatalog(R.drawable.card_default_nft, false)
@@ -78,6 +78,7 @@ class LocalStorage
putResourceArtworkToCatalog(R.drawable.card_ru043, false)
putResourceArtworkToCatalog(R.drawable.card_tg044, false)
putResourceArtworkToCatalog(R.drawable.card_tg046, false)
+ putResourceArtworkToCatalog(R.drawable.card_tgslix, false)
putResourceArtworkToCatalog(R.drawable.card_bc00, false)
putResourceArtworkToCatalog(R.drawable.card_ff32, true)
}
diff --git a/server-android/src/main/res/drawable/card_tgslix.png b/server-android/src/main/res/drawable/card_tgslix.png
new file mode 100644
index 0000000000..fe2f544598
Binary files /dev/null and b/server-android/src/main/res/drawable/card_tgslix.png differ