diff --git a/app/build.gradle b/app/build.gradle index 0419d814a4..9a0201b554 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,12 +44,15 @@ android { } dependencies { + def lifecycle_version = "2.0.0" + implementation project(':tangemcard-common') implementation project(':tangemcard-android') implementation project(':tangemserver-android') implementation 'androidx.appcompat:appcompat:1.1.0-alpha01' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" implementation 'com.google.android.material:material:1.1.0-alpha02' implementation 'com.google.dagger:dagger:2.16' implementation 'com.google.zxing:core:3.3.3' diff --git a/app/src/main/java/com/tangem/presentation/activity/ConfirmTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/ConfirmTransactionActivity.kt index aa7826c36f..290d86db93 100644 --- a/app/src/main/java/com/tangem/presentation/activity/ConfirmTransactionActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/ConfirmTransactionActivity.kt @@ -44,6 +44,7 @@ class ConfirmTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallbac setContentView(R.layout.activity_confirm_transaction) nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) ctx = TangemContext.loadFromBundle(this, intent.extras) @@ -185,21 +186,6 @@ class ConfirmTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallbac amount) } - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - - public override fun onPause() { - super.onPause() - nfcManager.onPause() - } - - public override fun onStop() { - super.onStop() - nfcManager.onStop() - } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == Constant.REQUEST_CODE_SIGN_TRANSACTION) { diff --git a/app/src/main/java/com/tangem/presentation/activity/CreateNewWalletActivity.kt b/app/src/main/java/com/tangem/presentation/activity/CreateNewWalletActivity.kt index 2d658484a7..97da6ec7c5 100644 --- a/app/src/main/java/com/tangem/presentation/activity/CreateNewWalletActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/CreateNewWalletActivity.kt @@ -9,14 +9,9 @@ import android.nfc.NfcAdapter import android.nfc.Tag import android.nfc.tech.IsoDep import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import android.view.View -import android.view.animation.Animation -import android.view.animation.DecelerateInterpolator -import android.view.animation.Transformation -import android.widget.ProgressBar -import android.widget.RelativeLayout import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity import com.tangem.App import com.tangem.Constant import com.tangem.domain.wallet.TangemContext @@ -57,6 +52,7 @@ class CreateNewWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, setContentView(R.layout.activity_create_new_wallet) nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) ctx = TangemContext.loadFromBundle(this, intent.extras) @@ -96,26 +92,11 @@ class CreateNewWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, } } - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - public override fun onPause() { - nfcManager.onPause() - if (createNewWalletTask != null) - createNewWalletTask!!.cancel(true) + createNewWalletTask?.cancel(true) super.onPause() } - public override fun onStop() { - // dismiss enable NFC dialog - nfcManager.onStop() - if (createNewWalletTask != null) - createNewWalletTask!!.cancel(true) - super.onStop() - } - override fun onReadStart(cardProtocol: CardProtocol) { rlProgressBar?.post { rlProgressBar.visibility = View.VISIBLE } diff --git a/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt b/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt index 25218e0f0f..7aaa9aadde 100644 --- a/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt @@ -64,6 +64,7 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card App.getNavigatorComponent().inject(this) nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) ctx = TangemContext.loadFromBundle(this, intent.extras) @@ -99,21 +100,6 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card } } - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - - public override fun onPause() { - super.onPause() - nfcManager.onPause() - } - - public override fun onStop() { - super.onStop() - nfcManager.onStop() - } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { if (requestCode == Constant.REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY) { if (resultCode == Activity.RESULT_OK) { diff --git a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt index f3bae0bdf9..d4fe8a6c5b 100644 --- a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt @@ -86,6 +86,7 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) verifyPermissions() @@ -243,18 +244,14 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco super.onResume() nfcAntenna.animate() ReadCardInfoTask.resetLastReadInfo() - nfcManager.onResume() } public override fun onPause() { - nfcManager.onPause() readCardInfoTask?.cancel(true) super.onPause() } public override fun onStop() { - // dismiss enable NFC dialog - nfcManager.onStop() readCardInfoTask?.cancel(true) super.onStop() } diff --git a/app/src/main/java/com/tangem/presentation/activity/NfcLifecycleObserver.kt b/app/src/main/java/com/tangem/presentation/activity/NfcLifecycleObserver.kt new file mode 100644 index 0000000000..73d9b6dccf --- /dev/null +++ b/app/src/main/java/com/tangem/presentation/activity/NfcLifecycleObserver.kt @@ -0,0 +1,25 @@ +package com.tangem.presentation.activity + +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleObserver +import androidx.lifecycle.OnLifecycleEvent +import com.tangem.tangemcard.android.reader.NfcManager + +class NfcLifecycleObserver(private var nfcManager: NfcManager) : LifecycleObserver { + + @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) + fun onResume() { + nfcManager.onResume() + } + + @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) + fun onPause() { + nfcManager.onPause() + } + + @OnLifecycleEvent(Lifecycle.Event.ON_STOP) + fun onStop() { + nfcManager.onStop() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt index ec5851e00c..25f9e20784 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt @@ -100,6 +100,7 @@ class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge setContentView(R.layout.activity_pin_request) nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) mode = Mode.valueOf(intent.getStringExtra(Constant.EXTRA_MODE)) @@ -171,7 +172,6 @@ class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge override fun onPause() { super.onPause() - if (fingerprintHelper != null) fingerprintHelper!!.cancel() @@ -179,8 +179,6 @@ class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge startFingerprintReaderTask!!.cancel(true) startFingerprintReaderTask = null } - - nfcManager.onPause() } override fun onStop() { @@ -192,13 +190,10 @@ class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge startFingerprintReaderTask!!.cancel(true) startFingerprintReaderTask = null } - - nfcManager.onStop() } override fun onResume() { super.onResume() - nfcManager.onResume() if (allowFingerprint) startFingerprintReader() } diff --git a/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt index 95272c5346..49aa637d0e 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt @@ -56,6 +56,7 @@ class PinSwapActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProt setContentView(R.layout.activity_pin_swap) nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) card = TangemCard(intent.getStringExtra(EXTRA_TANGEM_CARD_UID)) card!!.loadFromBundle(intent.extras!!.getBundle(EXTRA_TANGEM_CARD)) @@ -92,23 +93,13 @@ class PinSwapActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProt } } - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - public override fun onPause() { - nfcManager.onPause() - if (swapPinTask != null) - swapPinTask!!.cancel(true) + swapPinTask?.cancel(true) super.onPause() } public override fun onStop() { - // dismiss enable NFC dialog - nfcManager.onStop() - if (swapPinTask != null) - swapPinTask!!.cancel(true) + swapPinTask?.cancel(true) super.onStop() } diff --git a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt index 9d13b3c9e4..4450912190 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt @@ -44,6 +44,7 @@ class PrepareCryptonitOtherApiWithdrawalActivity : AppCompatActivity(), NfcAdapt App.getNavigatorComponent().inject(this) nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) ctx = TangemContext.loadFromBundle(this, intent.extras) @@ -129,47 +130,6 @@ class PrepareCryptonitOtherApiWithdrawalActivity : AppCompatActivity(), NfcAdapt doRequestBalance() } - private fun doRequestBalance() { - if (cryptonit!!.havaAccountInfo()) { - rlProgressBar.visibility = View.VISIBLE - tvProgressDescription.text = getString(R.string.cryptonit_request_balance) - tvError.visibility = View.INVISIBLE - cryptonit!!.requestBalance(ctx.blockchain.currency, "USD") - } else { - tvError.visibility = View.VISIBLE - tvError.text = getString(R.string.cryptonit_not_enough_account_data) - } - } - -// private fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) { -// this.addTextChangedListener(object : TextWatcher { -// override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { -// } -// -// override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { -// } -// -// override fun afterTextChanged(editable: Editable?) { -// afterTextChanged.invoke(editable.toString()) -// } -// }) -// } - - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - - public override fun onPause() { - super.onPause() - nfcManager.onPause() - } - - public override fun onStop() { - super.onStop() - nfcManager.onStop() - } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == Activity.RESULT_OK && data != null && data.extras!!.containsKey("QRCode")) { @@ -198,7 +158,18 @@ class PrepareCryptonitOtherApiWithdrawalActivity : AppCompatActivity(), NfcAdapt } catch (e: IOException) { e.printStackTrace() } + } + private fun doRequestBalance() { + if (cryptonit!!.havaAccountInfo()) { + rlProgressBar.visibility = View.VISIBLE + tvProgressDescription.text = getString(R.string.cryptonit_request_balance) + tvError.visibility = View.INVISIBLE + cryptonit!!.requestBalance(ctx.blockchain.currency, "USD") + } else { + tvError.visibility = View.VISIBLE + tvError.text = getString(R.string.cryptonit_not_enough_account_data) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt index 18737def81..7f90e8e0b4 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt @@ -28,8 +28,8 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade val TAG: String = PrepareCryptonitWithdrawalActivity::class.java.simpleName } - private lateinit var nfcManager: NfcManager private lateinit var ctx: TangemContext + private lateinit var nfcManager: NfcManager private var cryptonit: Cryptonit? = null @@ -38,10 +38,11 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade super.onCreate(savedInstanceState) setContentView(R.layout.activity_prepare_cryptonit_withdrawal) - nfcManager = NfcManager(this, this) - ctx = TangemContext.loadFromBundle(this, intent.extras) + nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) + cryptonit = Cryptonit(this) etUsername.setText(cryptonit!!.username) @@ -56,9 +57,9 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade tvFeeCurrency.text = engine.feeCurrency etAmount.setText(engine.convertToAmount(engine.convertToInternalAmount(ctx.card!!.denomination)).toValueString()) - etAmount.filters=engine.amountInputFilters + etAmount.filters = engine.amountInputFilters - etAmount.setOnEditorActionListener { lv, actionId, event -> + etAmount.setOnEditorActionListener { lv, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_DONE) { val imm = lv.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(lv.windowToken, 0) @@ -125,7 +126,7 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade cryptonit!!.setWithdrawalListener { response -> rlProgressBar.visibility = View.INVISIBLE if (response.success != null && response.success!!) { - Toast.makeText(this, "Withdrawal successful!", Toast.LENGTH_LONG).show(); + Toast.makeText(this, R.string.withdrawal_successful, Toast.LENGTH_LONG).show(); finish() } else { tvError.visibility = View.VISIBLE @@ -136,6 +137,14 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade doRequestBalance() } + override fun onTagDiscovered(tag: Tag) { + try { + nfcManager.ignoreTag(tag) + } catch (e: IOException) { + e.printStackTrace() + } + } + private fun doRequestBalance() { if (cryptonit!!.haveAccountInfo()) { rlProgressBar.visibility = View.VISIBLE @@ -148,28 +157,4 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade } } - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - - public override fun onPause() { - super.onPause() - nfcManager.onPause() - } - - public override fun onStop() { - super.onStop() - nfcManager.onStop() - } - - override fun onTagDiscovered(tag: Tag) { - try { - nfcManager.ignoreTag(tag) - } catch (e: IOException) { - e.printStackTrace() - } - - } - } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt index b99dfa531c..74f190c552 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt @@ -38,7 +38,8 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa } private lateinit var ctx: TangemContext - private var nfcManager: NfcManager? = null + private lateinit var nfcManager: NfcManager + private var kraken: Kraken? = null private var fee: BigDecimal? = null @@ -52,10 +53,11 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa App.getNavigatorComponent().inject(this) - nfcManager = NfcManager(this, this) - ctx = TangemContext.loadFromBundle(this, intent.extras) + nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) + kraken = Kraken(this) tvKey.text = kraken!!.key @@ -68,7 +70,7 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa tvCurrency.text = engine!!.balanceCurrency etAmount.setText(engine.convertToAmount(engine.convertToInternalAmount(ctx.card!!.denomination)).toValueString()) - etAmount.filters=engine.amountInputFilters + etAmount.filters = engine.amountInputFilters etAmount.setOnEditorActionListener { lv, actionId, event -> if (actionId == EditorInfo.IME_ACTION_DONE) { @@ -167,7 +169,7 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa val builder = AlertDialog.Builder(this) // Set a title for alert dialog - builder.setTitle("Please confirm withdraw") + builder.setTitle(R.string.please_confirm_withdraw) // Set a message for alert dialog builder.setMessage(String.format("Continue with fee %s %s?", fee!!.toString().trimEnd('0'), ctx.blockchain.currency)) @@ -186,23 +188,22 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa rlProgressBar.visibility = View.VISIBLE tvProgressDescription.text = getString(R.string.kraken_request_withdrawal) - //Toast.makeText(this, String.format("Withdraw %s!",dblAmount.toString()), Toast.LENGTH_LONG).show() kraken!!.requestWithdraw(ctx.blockchain.currency, dblAmount.toString(), ctx.coinData!!.wallet) } catch (e: Exception) { etAmount.error = getString(R.string.unknown_amount_format) } } DialogInterface.BUTTON_NEGATIVE -> { - Toast.makeText(this, "Operation canceled!", Toast.LENGTH_LONG).show() + Toast.makeText(this, R.string.operation_canceled, Toast.LENGTH_LONG).show() } } } // Set the alert dialog positive/yes button - builder.setPositiveButton("YES", dialogClickListener) + builder.setPositiveButton(R.string.yes, dialogClickListener) // Set the alert dialog negative/no button - builder.setNegativeButton("NO", dialogClickListener) + builder.setNegativeButton(R.string.no, dialogClickListener) // Initialize the AlertDialog using builder object @@ -224,21 +225,6 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa } } - public override fun onResume() { - super.onResume() - nfcManager!!.onResume() - } - - public override fun onPause() { - super.onPause() - nfcManager!!.onPause() - } - - public override fun onStop() { - super.onStop() - nfcManager!!.onStop() - } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == Activity.RESULT_OK && data != null && data.extras!!.containsKey("QRCode")) { @@ -262,12 +248,10 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa override fun onTagDiscovered(tag: Tag) { try { -// Log.w(javaClass.name, "Ignore discovered tag!") - nfcManager!!.ignoreTag(tag) + nfcManager.ignoreTag(tag) } catch (e: IOException) { e.printStackTrace() } - } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/activity/PrepareTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PrepareTransactionActivity.kt index 6050ead283..3cb2c6db29 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PrepareTransactionActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PrepareTransactionActivity.kt @@ -47,6 +47,7 @@ class PrepareTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallbac App.getNavigatorComponent().inject(this) nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) ctx = TangemContext.loadFromBundle(this, intent.extras) @@ -129,21 +130,6 @@ class PrepareTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallbac ivCamera.setOnClickListener { navigator.showQrScanActivity(this, Constant.REQUEST_CODE_SCAN_QR) } } - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - - public override fun onPause() { - super.onPause() - nfcManager.onPause() - } - - public override fun onStop() { - super.onStop() - nfcManager.onStop() - } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == Constant.REQUEST_CODE_SCAN_QR && resultCode == Activity.RESULT_OK && data != null && data.extras!!.containsKey("QRCode")) { diff --git a/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt index 2db65fc008..7fc331f2be 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt @@ -10,28 +10,21 @@ import android.nfc.NfcAdapter import android.nfc.Tag import android.nfc.tech.IsoDep import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import android.view.View -import android.view.animation.Animation -import android.view.animation.DecelerateInterpolator -import android.view.animation.Transformation -import android.widget.RelativeLayout import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity import com.tangem.App -import com.tangem.tangemcard.tasks.PurgeTask -import com.tangem.tangemcard.reader.CardProtocol -import com.tangem.tangemcard.android.reader.NfcManager import com.tangem.domain.wallet.TangemContext import com.tangem.presentation.dialog.NoExtendedLengthSupportDialog import com.tangem.presentation.dialog.WaitSecurityDelayDialog import com.tangem.presentation.dialog.WaitSecurityDelayDialogNew import com.tangem.presentation.event.DeletingWalletFinish -import com.tangem.presentation.event.ReadAfterRequest -import com.tangem.presentation.event.ReadBeforeRequest -import com.tangem.presentation.event.ReadWait import com.tangem.tangemcard.android.nfc.DeviceNFCAntennaLocation +import com.tangem.tangemcard.android.reader.NfcManager import com.tangem.tangemcard.android.reader.NfcReader import com.tangem.tangemcard.data.asBundle +import com.tangem.tangemcard.reader.CardProtocol +import com.tangem.tangemcard.tasks.PurgeTask import com.tangem.tangemcard.util.Util import com.tangem.util.LOG import com.tangem.wallet.R @@ -72,6 +65,7 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) ctx = TangemContext.loadFromBundle(this, intent.extras) @@ -84,20 +78,12 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc progressBar.visibility = View.INVISIBLE } - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - public override fun onPause() { - nfcManager.onPause() purgeTask?.cancel(true) super.onPause() } public override fun onStop() { - // dismiss enable NFC dialog - nfcManager.onStop() purgeTask?.cancel(true) super.onStop() } diff --git a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt index dc568af6ae..866da0588c 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt @@ -31,6 +31,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { setContentView(R.layout.activity_send_transaction) nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) ctx = TangemContext.loadFromBundle(this, intent.extras) tx = intent.getByteArrayExtra(Constant.EXTRA_TX) @@ -67,21 +68,6 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { return super.onKeyDown(keyCode, event) } - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - - public override fun onPause() { - super.onPause() - nfcManager.onPause() - } - - public override fun onStop() { - super.onStop() - nfcManager.onStop() - } - override fun onTagDiscovered(tag: Tag) { try { nfcManager.ignoreTag(tag) diff --git a/app/src/main/java/com/tangem/presentation/activity/SignTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SignTransactionActivity.kt index 2e20915f48..959c6e1f8c 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SignTransactionActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/SignTransactionActivity.kt @@ -10,7 +10,6 @@ import android.nfc.tech.IsoDep import android.os.Bundle import android.view.KeyEvent import android.view.View -import android.widget.ProgressBar import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.tangem.App @@ -57,6 +56,7 @@ class SignTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, setContentView(R.layout.activity_sign_transaction) nfcManager = NfcManager(this, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) ctx = TangemContext.loadFromBundle(this, intent.extras) @@ -74,23 +74,13 @@ class SignTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, progressBar.visibility = View.INVISIBLE } - public override fun onResume() { - super.onResume() - nfcManager.onResume() - } - public override fun onPause() { - nfcManager.onPause() - if (signTransactionTask != null) - signTransactionTask!!.cancel(true) + signTransactionTask?.cancel(true) super.onPause() } public override fun onStop() { - // dismiss enable NFC dialog - nfcManager.onStop() - if (signTransactionTask != null) - signTransactionTask!!.cancel(true) + signTransactionTask?.cancel(true) super.onStop() } diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index 941929df51..fe2dd54a87 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -27,10 +27,7 @@ import com.tangem.domain.wallet.BalanceValidator import com.tangem.domain.wallet.CoinEngine import com.tangem.domain.wallet.CoinEngineFactory import com.tangem.domain.wallet.TangemContext -import com.tangem.presentation.activity.LoadedWalletActivity -import com.tangem.presentation.activity.PinRequestActivity -import com.tangem.presentation.activity.PrepareCryptonitWithdrawalActivity -import com.tangem.presentation.activity.PrepareKrakenWithdrawalActivity +import com.tangem.presentation.activity.* import com.tangem.presentation.dialog.NoExtendedLengthSupportDialog import com.tangem.presentation.dialog.PINSwapWarningDialog import com.tangem.presentation.dialog.ShowQRCodeDialog @@ -97,10 +94,11 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - nfcManager = NfcManager(activity, this) - ctx = TangemContext.loadFromBundle(activity, activity?.intent?.extras) + nfcManager = NfcManager(activity, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) + lastTag = activity?.intent?.getParcelableExtra(Constant.EXTRA_LAST_DISCOVERED_TAG) } @@ -276,14 +274,8 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback startVerify(lastTag) } - override fun onResume() { - super.onResume() - nfcManager.onResume() - } - override fun onPause() { super.onPause() - nfcManager.onPause() if (timerHideErrorAndMessage != null) { timerHideErrorAndMessage!!.cancel() timerHideErrorAndMessage = null @@ -296,11 +288,6 @@ class LoadedWallet : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback EventBus.getDefault().register(this) } - override fun onStop() { - super.onStop() - nfcManager.onStop() - } - override fun onDestroy() { EventBus.getDefault().unregister(this) super.onDestroy() diff --git a/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt b/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt index 35c5a8cf01..dc8403a612 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt @@ -50,8 +50,10 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - nfcManager = NfcManager(activity, this) ctx = TangemContext.loadFromBundle(activity, activity?.intent?.extras) + + nfcManager = NfcManager(activity, this) + lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -60,7 +62,6 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - updateViews() srlVerifyCard.setOnRefreshListener { srlVerifyCard.isRefreshing = false } @@ -210,21 +211,6 @@ class VerifyCard : androidx.fragment.app.Fragment(), NfcAdapter.ReaderCallback { } } - override fun onResume() { - super.onResume() - nfcManager.onResume() - } - - override fun onPause() { - super.onPause() - nfcManager.onPause() - } - - override fun onStop() { - super.onStop() - nfcManager.onStop() - } - override fun onTagDiscovered(tag: Tag?) { try { nfcManager.ignoreTag(tag) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c56cbf03da..d490e04416 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,6 +2,8 @@ OK Cancel + Yes + No No connection with blockchain nodes Continue Not found @@ -247,6 +249,7 @@ Get balance Withdrawal operation fee + Withdrawal successful! KRAKEN payment @@ -256,5 +259,7 @@ Please enter account data Get balance Withdrawal + Operation canceled! + Please confirm withdraw \ No newline at end of file