diff --git a/app/build.gradle b/app/build.gradle
index cdcf753d87..8ef3635cb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -90,10 +90,10 @@ dependencies {
implementation 'com.madgag.spongycastle:core:1.56.0.0'
implementation 'com.madgag.spongycastle:prov:1.56.0.0'
implementation 'com.scottyab:rootbeer-lib:0.0.7'
- implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
- implementation 'com.squareup.retrofit2:retrofit:2.5.0'
- implementation 'com.squareup.retrofit2:converter-scalars:2.5.0'
- implementation 'com.squareup.retrofit2:converter-jackson:2.5.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
+ implementation 'com.squareup.retrofit2:retrofit:2.6.0'
+ implementation 'com.squareup.retrofit2:converter-scalars:2.6.0'
+ implementation 'com.squareup.retrofit2:converter-jackson:2.6.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
implementation "com.squareup.okhttp3:okhttp-sse:3.11.0"
implementation 'com.skyfishjy.ripplebackground:library:1.0.1'
diff --git a/app/src/main/java/com/tangem/data/dp/PrefsManager.kt b/app/src/main/java/com/tangem/data/dp/PrefsManager.kt
index 29bc85c94d..a37c609121 100644
--- a/app/src/main/java/com/tangem/data/dp/PrefsManager.kt
+++ b/app/src/main/java/com/tangem/data/dp/PrefsManager.kt
@@ -41,4 +41,10 @@ class PrefsManager {
Hawk.delete(Constant.PREF_LAST_WALLET_ADDRESS)
}
+ fun appendCid(newCid: String) {
+ val prevCids: String = Hawk.get("CID_Key", "")
+ if (!prevCids.contains(newCid)) Hawk.put("CID_Key", "$prevCids$newCid, ")
+ }
+
+ fun getAllCids(): String = Hawk.get("CID_Key", "")
}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/ui/fragment/LoadedWalletFragment.kt b/app/src/main/java/com/tangem/ui/fragment/LoadedWalletFragment.kt
index d965fa6d2e..f326df9af0 100644
--- a/app/src/main/java/com/tangem/ui/fragment/LoadedWalletFragment.kt
+++ b/app/src/main/java/com/tangem/ui/fragment/LoadedWalletFragment.kt
@@ -13,7 +13,6 @@ import android.nfc.tech.IsoDep
import android.os.Build
import android.os.Bundle
import android.text.Html
-import android.util.Log
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
@@ -25,12 +24,21 @@ import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import com.tangem.App
import com.tangem.Constant
+import com.tangem.card_android.android.nfc.NfcLifecycleObserver
+import com.tangem.card_android.android.reader.NfcManager
+import com.tangem.card_android.android.reader.NfcReader
+import com.tangem.card_android.data.EXTRA_TANGEM_CARD
+import com.tangem.card_android.data.EXTRA_TANGEM_CARD_UID
+import com.tangem.card_android.data.loadFromBundle
+import com.tangem.card_common.data.TangemCard
+import com.tangem.card_common.reader.CardProtocol
+import com.tangem.card_common.tasks.VerifyCardTask
+import com.tangem.card_common.util.Util
import com.tangem.data.Blockchain
+import com.tangem.data.dp.PrefsManager
import com.tangem.data.network.ServerApiCommon
-import com.tangem.wallet.BalanceValidator
-import com.tangem.wallet.CoinEngine
-import com.tangem.wallet.CoinEngineFactory
-import com.tangem.wallet.TangemContext
+import com.tangem.server_android.ServerApiTangem
+import com.tangem.server_android.model.CardVerifyAndGetInfo
import com.tangem.ui.activity.LoadedWalletActivity
import com.tangem.ui.activity.PinRequestActivity
import com.tangem.ui.activity.PrepareCryptonitWithdrawalActivity
@@ -42,21 +50,9 @@ import com.tangem.ui.dialog.WaitSecurityDelayDialog
import com.tangem.ui.event.DeletingWalletFinish
import com.tangem.ui.event.TransactionFinishWithError
import com.tangem.ui.event.TransactionFinishWithSuccess
-import com.tangem.card_android.android.nfc.NfcLifecycleObserver
-import com.tangem.card_android.android.reader.NfcManager
-import com.tangem.card_android.android.reader.NfcReader
-import com.tangem.card_android.data.EXTRA_TANGEM_CARD
-import com.tangem.card_android.data.EXTRA_TANGEM_CARD_UID
-import com.tangem.card_android.data.loadFromBundle
-import com.tangem.card_common.data.TangemCard
-import com.tangem.card_common.reader.CardProtocol
-import com.tangem.card_common.tasks.VerifyCardTask
-import com.tangem.card_common.util.Util
-import com.tangem.server_android.ServerApiTangem
-import com.tangem.server_android.model.CardVerifyAndGetInfo
import com.tangem.util.LOG
import com.tangem.util.UtilHelper
-import com.tangem.wallet.R
+import com.tangem.wallet.*
import kotlinx.android.synthetic.main.fr_loaded_wallet.*
import kotlinx.android.synthetic.main.layout_btn_details.*
import kotlinx.android.synthetic.main.layout_tangem_card.*
@@ -683,6 +679,8 @@ class LoadedWalletFragment : androidx.fragment.app.Fragment(), NfcAdapter.Reader
LOG.e(TAG, "requestBalanceAndUnspentTransactions ctx.error: " + ctx.error)
}
updateViews()
+
+ if (coinEngine.isBalanceNotZero) showWarningIfPendingTransactionIsPossible()
}
override fun onProgress() {
@@ -707,6 +705,20 @@ class LoadedWalletFragment : androidx.fragment.app.Fragment(), NfcAdapter.Reader
}
}
+ private fun showWarningIfPendingTransactionIsPossible() {
+ if (ctx.card.signedHashes > 0 && isNewCid(ctx.card.cidDescription)) {
+ AlertDialog.Builder(context)
+ .setTitle(R.string.warning)
+ .setMessage(R.string.card_signed_transactions_warning)
+ .setPositiveButton(R.string.ok) { _, _ -> }
+ .create()
+ .show()
+ }
+ PrefsManager.getInstance().appendCid(ctx.card.cidDescription)
+ }
+
+ private fun isNewCid(cid: String): Boolean = !PrefsManager.getInstance().getAllCids().contains(cid)
+
private fun requestVerifyAndGetInfo() {
if (UtilHelper.isOnline(context as Activity)) {
if ((ctx.card!!.isOnlineVerified == null || !ctx.card!!.isOnlineVerified)) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1f61784da3..4f3b52ed26 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -151,6 +151,8 @@
Details
New scan
Verifying in blockchain…
+ Warning: This card has been already topped up and signed transactions in the past.
+ Consider immediate withdrawal of all funds if you have received this card from an untrusted source.
Now touch the banknote with ID