From adfd2aa2bd170ad775ac9ccb94ab90d1bcbc15f6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 11 Mar 2019 19:59:46 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../ui/activity/CreateNewWalletActivity.kt | 12 +++------ .../tangem/ui/activity/EmptyWalletActivity.kt | 6 +---- .../com/tangem/ui/activity/MainActivity.kt | 25 ++++++++----------- .../com/tangem/ui/activity/PinSwapActivity.kt | 21 +++++++--------- .../com/tangem/ui/activity/PurgeActivity.kt | 13 +++------- .../ui/activity/SignTransactionActivity.kt | 8 +++--- .../com/tangem/ui/fragment/LoadedWallet.kt | 4 +-- app/src/main/res/values/strings.xml | 2 +- .../tangem/card_common/data/TangemCard.java | 1 - 9 files changed, 34 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/com/tangem/ui/activity/CreateNewWalletActivity.kt b/app/src/main/java/com/tangem/ui/activity/CreateNewWalletActivity.kt index 67ce65f0d5..c8190e6477 100644 --- a/app/src/main/java/com/tangem/ui/activity/CreateNewWalletActivity.kt +++ b/app/src/main/java/com/tangem/ui/activity/CreateNewWalletActivity.kt @@ -72,24 +72,20 @@ class CreateNewWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, try { // get IsoDep handle and run cardReader thread val isoDep = IsoDep.get(tag) - ?: throw CardProtocol.TangemException(getString(R.string.wrong_tag_err)) val uid = tag.id val sUID = Util.byteArrayToHexString(uid) -// Log.v(TAG, "UID: " + sUID); - if (sUID == ctx.card!!.uid) { + if (sUID == ctx.card.uid) { if (lastReadSuccess) - isoDep.timeout = ctx.card!!.pauseBeforePIN2 + 5000 + isoDep.timeout = ctx.card.pauseBeforePIN2 + 5000 else - isoDep.timeout = ctx.card!!.pauseBeforePIN2 + 65000 + isoDep.timeout = ctx.card.pauseBeforePIN2 + 65000 createNewWalletTask = CreateNewWalletTask(ctx.card, NfcReader(nfcManager, isoDep), App.localStorage, App.pinStorage, this) - createNewWalletTask!!.start() + createNewWalletTask?.start() } else { -// Log.d(TAG, "Mismatch card UID (" + sUID + " instead of " + mCard.getUID() + ")"); nfcManager.ignoreTag(isoDep.tag) } - } catch (e: Exception) { e.printStackTrace() } diff --git a/app/src/main/java/com/tangem/ui/activity/EmptyWalletActivity.kt b/app/src/main/java/com/tangem/ui/activity/EmptyWalletActivity.kt index 9852984e20..73c45ccee3 100644 --- a/app/src/main/java/com/tangem/ui/activity/EmptyWalletActivity.kt +++ b/app/src/main/java/com/tangem/ui/activity/EmptyWalletActivity.kt @@ -140,15 +140,11 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card override fun onTagDiscovered(tag: Tag) { try { val isoDep = IsoDep.get(tag) - ?: throw CardProtocol.TangemException(getString(R.string.wrong_tag_err)) val uid = tag.id val sUID = Util.byteArrayToHexString(uid) - if (ctx.card!!.uid != sUID) { - LOG.d(TAG, "Invalid UID: $sUID") + if (ctx.card.uid != sUID) { nfcManager.ignoreTag(isoDep.tag) return - } else { - LOG.d(TAG, "UID: $sUID") } if (lastReadSuccess) diff --git a/app/src/main/java/com/tangem/ui/activity/MainActivity.kt b/app/src/main/java/com/tangem/ui/activity/MainActivity.kt index ee2c2663dd..cff1c18a5c 100644 --- a/app/src/main/java/com/tangem/ui/activity/MainActivity.kt +++ b/app/src/main/java/com/tangem/ui/activity/MainActivity.kt @@ -220,21 +220,15 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco try { // get IsoDep handle and run cardReader thread val isoDep = IsoDep.get(tag) - ?: throw CardProtocol.TangemException(getString(R.string.wrong_tag_err)) - - LOG.e(TAG, "setTimeout(" + (1000 + 3000 * unsuccessReadCount) + ")") - if (unsuccessReadCount < 2) { + if (unsuccessReadCount < 2) isoDep.timeout = 2000 + 5000 * unsuccessReadCount - } else { + else isoDep.timeout = 90000 - } + lastTag = tag readCardInfoTask = ReadCardInfoTask(NfcReader(nfcManager, isoDep), App.localStorage, App.pinStorage, this) readCardInfoTask?.start() - - LOG.i(TAG, "onTagDiscovered " + Arrays.toString(tag.id)) - } catch (e: Exception) { e.printStackTrace() nfcManager.notifyReadResult(false) @@ -275,10 +269,11 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco // TODO - ??? remove save and load??? val cardInfo = Bundle() - cardInfo.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid) val bCard = Bundle() - cardProtocol.card.saveToBundle(bCard) + + cardInfo.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid) cardInfo.putBundle(EXTRA_TANGEM_CARD, bCard) + cardProtocol.card.saveToBundle(bCard) val uid = cardInfo.getString("UID") val card = TangemCard(uid) @@ -288,10 +283,12 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco when { card.status == TangemCard.Status.Loaded -> lastTag?.let { val engineCoin = CoinEngineFactory.create(ctx) - ?: throw CardProtocol.TangemException("Can't create CoinEngine!") - engineCoin.defineWallet() - navigator.showLoadedWallet(this, it, ctx) + if (engineCoin != null) { + engineCoin.defineWallet() + navigator.showLoadedWallet(this, it, ctx) + } } +// ?: throw CardProtocol.TangemException("Can't create CoinEngine!") card.status == TangemCard.Status.Empty -> navigator.showEmptyWallet(this, ctx) card.status == TangemCard.Status.Purged -> Toast.makeText(this, R.string.erased_wallet, Toast.LENGTH_SHORT).show() card.status == TangemCard.Status.NotPersonalized -> Toast.makeText(this, R.string.not_personalized, Toast.LENGTH_SHORT).show() diff --git a/app/src/main/java/com/tangem/ui/activity/PinSwapActivity.kt b/app/src/main/java/com/tangem/ui/activity/PinSwapActivity.kt index 780e648132..d7f5e2b4c3 100644 --- a/app/src/main/java/com/tangem/ui/activity/PinSwapActivity.kt +++ b/app/src/main/java/com/tangem/ui/activity/PinSwapActivity.kt @@ -47,7 +47,7 @@ class PinSwapActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProt private lateinit var nfcManager: NfcManager - private var card: TangemCard? = null + private lateinit var card: TangemCard; private var newPIN: String? = null private var newPIN2: String? = null @@ -63,33 +63,30 @@ class PinSwapActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProt lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) card = TangemCard(intent.getStringExtra(EXTRA_TANGEM_CARD_UID)) - card!!.loadFromBundle(intent.extras!!.getBundle(EXTRA_TANGEM_CARD)) + + card.loadFromBundle(intent.extras!!.getBundle(EXTRA_TANGEM_CARD)) newPIN = intent.getStringExtra(Constant.EXTRA_NEW_PIN) newPIN2 = intent.getStringExtra(Constant.EXTRA_NEW_PIN_2) - tvCardID.text = card!!.cidDescription + tvCardID.text = card.cidDescription progressBar = findViewById(R.id.progressBar) - progressBar!!.progressTintList = ColorStateList.valueOf(Color.DKGRAY) - progressBar!!.visibility = View.INVISIBLE + progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY) + progressBar?.visibility = View.INVISIBLE } override fun onTagDiscovered(tag: Tag) { try { // get IsoDep handle and run cardReader thread val isoDep = IsoDep.get(tag) - ?: throw CardProtocol.TangemException(getString(R.string.wrong_tag_err)) val uid = tag.id val sUID = Util.byteArrayToHexString(uid) - LOG.d(TAG, "UID: $sUID") - - if (sUID == card!!.uid) { - isoDep.timeout = card!!.pauseBeforePIN2 + 65000 + if (sUID == card.uid) { + isoDep.timeout = card.pauseBeforePIN2 + 65000 swapPinTask = SwapPINTask(card, NfcReader(nfcManager, isoDep), App.localStorage, App.pinStorage, this, newPIN, newPIN2) - swapPinTask!!.start() + swapPinTask?.start() } else { - LOG.d(TAG, "Mismatch card UID (" + sUID + " instead of " + card!!.uid + ")") nfcManager.ignoreTag(isoDep.tag) } } catch (e: Exception) { diff --git a/app/src/main/java/com/tangem/ui/activity/PurgeActivity.kt b/app/src/main/java/com/tangem/ui/activity/PurgeActivity.kt index a10181720d..58e3bc942e 100644 --- a/app/src/main/java/com/tangem/ui/activity/PurgeActivity.kt +++ b/app/src/main/java/com/tangem/ui/activity/PurgeActivity.kt @@ -76,7 +76,7 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc nfcDeviceAntenna = NfcDeviceAntennaLocation(this, ivHandCardHorizontal, ivHandCardVertical, llHand, llNfc) nfcDeviceAntenna.init() - tvCardID.text = ctx.card!!.cidDescription + tvCardID.text = ctx.card.cidDescription progressBar.progressTintList = ColorStateList.valueOf(Color.DKGRAY) progressBar.visibility = View.INVISIBLE } @@ -90,20 +90,15 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc try { // get IsoDep handle and run cardReader thread val isoDep = IsoDep.get(tag) - ?: throw CardProtocol.TangemException(getString(R.string.wrong_tag_err)) val uid = tag.id val sUID = Util.byteArrayToHexString(uid) - LOG.d(TAG, "UID: $sUID") - - if (sUID == ctx.card!!.uid) { - isoDep.timeout = ctx.card!!.pauseBeforePIN2 + 65000 + if (sUID == ctx.card.uid) { + isoDep.timeout = ctx.card.pauseBeforePIN2 + 65000 purgeTask = PurgeTask(ctx.card, NfcReader(nfcManager, isoDep), App.localStorage, App.pinStorage, this) - purgeTask!!.start() + purgeTask?.start() } else { - LOG.d(TAG, "Mismatch card UID (" + sUID + " instead of " + ctx.card.uid + ")") nfcManager.ignoreTag(isoDep.tag) } - } catch (e: Exception) { e.printStackTrace() } diff --git a/app/src/main/java/com/tangem/ui/activity/SignTransactionActivity.kt b/app/src/main/java/com/tangem/ui/activity/SignTransactionActivity.kt index f8530c86cb..089fe31274 100644 --- a/app/src/main/java/com/tangem/ui/activity/SignTransactionActivity.kt +++ b/app/src/main/java/com/tangem/ui/activity/SignTransactionActivity.kt @@ -116,7 +116,6 @@ class SignTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, try { // get IsoDep handle and run cardReader thread val isoDep = IsoDep.get(tag) - ?: throw CardProtocol.TangemException(getString(R.string.wrong_tag_err)) val uid = tag.id val sUID = Util.byteArrayToHexString(uid) @@ -127,8 +126,7 @@ class SignTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, isoDep.timeout = ctx.card.pauseBeforePIN2 + 65000 val coinEngine = CoinEngineFactory.create(ctx) - ?: throw CardProtocol.TangemException(getString(R.string.ex_cant_create_coinEngine)) - coinEngine.setOnNeedSendTransaction { tx -> + coinEngine?.setOnNeedSendTransaction { tx -> if (tx != null) { val intent = Intent(this, SendTransactionActivity::class.java) ctx.saveToIntent(intent) @@ -136,10 +134,10 @@ class SignTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, startActivityForResult(intent, Constant.REQUEST_CODE_SEND_TRANSACTION_) } } - val transactionToSign = coinEngine.constructTransaction(amount, fee, isIncludeFee, outAddressStr) + val transactionToSign = coinEngine?.constructTransaction(amount, fee, isIncludeFee, outAddressStr) signTransactionTask = SignTask(ctx.card, NfcReader(nfcManager, isoDep), App.localStorage, App.pinStorage, this, transactionToSign) - signTransactionTask!!.start() + signTransactionTask?.start() } else nfcManager.ignoreTag(isoDep.tag) diff --git a/app/src/main/java/com/tangem/ui/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/ui/fragment/LoadedWallet.kt index 157b965d92..1e27ef605a 100644 --- a/app/src/main/java/com/tangem/ui/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/ui/fragment/LoadedWallet.kt @@ -744,8 +744,7 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback private fun startVerify(tag: Tag?) { try { val isoDep = IsoDep.get(tag) - ?: throw CardProtocol.TangemException(getString(R.string.wrong_tag_err)) - val uid = tag!!.id + val uid = tag?.id val sUID = Util.byteArrayToHexString(uid) if (ctx.card.uid != sUID || cardProtocol != null) { nfcManager.ignoreTag(isoDep.tag) @@ -757,7 +756,6 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback else isoDep.timeout = 65000 - verifyCardTask = VerifyCardTask(ctx.card, NfcReader(nfcManager, isoDep), App.localStorage, App.pinStorage, App.firmwaresStorage, this) verifyCardTask?.start() } catch (e: Exception) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ca3a05c013..f20adac23e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,7 +7,7 @@ No connection with blockchain nodes Continue Not found - Not ISO tag! + Card must be loaded first! Tag lost! command diff --git a/card-common/src/main/java/com/tangem/card_common/data/TangemCard.java b/card-common/src/main/java/com/tangem/card_common/data/TangemCard.java index c73b0953b8..539168740e 100644 --- a/card-common/src/main/java/com/tangem/card_common/data/TangemCard.java +++ b/card-common/src/main/java/com/tangem/card_common/data/TangemCard.java @@ -492,7 +492,6 @@ public class TangemCard { this.UID = UID; } - public enum Status { NotPersonalized(0), Empty(1), Loaded(2), Purged(3);