diff --git a/app/src/main/java/com/tangem/Constant.kt b/app/src/main/java/com/tangem/Constant.kt index c7a2a747ae..dcb7d64edd 100644 --- a/app/src/main/java/com/tangem/Constant.kt +++ b/app/src/main/java/com/tangem/Constant.kt @@ -69,4 +69,13 @@ object Constant { const val REQUEST_CODE_SEND_PAYMENT_ = 1 const val RESULT_INVALID_PIN_ = Activity.RESULT_FIRST_USER + // PreparePaymentActivity + const val REQUEST_CODE_SCAN_QR = 1 + const val REQUEST_CODE_SEND_PAYMENT__ = 2 + + // PrepareCryptonitOtherApiWithdrawalActivity + const val REQUEST_CODE_SCAN_QR_KEY = 1 + const val REQUEST_CODE_SCAN_QR_SECRET = 2 + const val REQUEST_CODE_SCAN_QR_USER_ID = 3 + } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/di/Navigator.kt b/app/src/main/java/com/tangem/di/Navigator.kt index cbcd107603..3a620229c4 100644 --- a/app/src/main/java/com/tangem/di/Navigator.kt +++ b/app/src/main/java/com/tangem/di/Navigator.kt @@ -24,6 +24,10 @@ class Navigator { context.startActivityForResult(PinRequestActivity.callingIntent(context, mode), Constant.REQUEST_CODE_ENTER_PIN_ACTIVITY) } + fun showQrScanActivity(context: Activity, requestCode: Int) { + context.startActivityForResult(QrScanActivity.callingIntent(context), requestCode) + } + fun showPinRequestRequestPin(context: Activity, mode: String, ctx: TangemContext, newPin: String) { context.startActivityForResult(PinRequestActivity.callingIntentRequestPin(context, mode, ctx, newPin), Constant.REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) } diff --git a/app/src/main/java/com/tangem/di/NavigatorComponent.java b/app/src/main/java/com/tangem/di/NavigatorComponent.java index dc6bf5a5fc..23bd390f21 100644 --- a/app/src/main/java/com/tangem/di/NavigatorComponent.java +++ b/app/src/main/java/com/tangem/di/NavigatorComponent.java @@ -4,6 +4,9 @@ import com.tangem.presentation.activity.EmptyWalletActivity; import com.tangem.presentation.activity.LoadedWalletActivity; import com.tangem.presentation.activity.LogoActivity; import com.tangem.presentation.activity.MainActivity; +import com.tangem.presentation.activity.PrepareCryptonitOtherApiWithdrawalActivity; +import com.tangem.presentation.activity.PrepareKrakenWithdrawalActivity; +import com.tangem.presentation.activity.PreparePaymentActivity; import com.tangem.presentation.activity.VerifyCardActivity; import javax.inject.Singleton; @@ -20,6 +23,12 @@ public interface NavigatorComponent { void inject(MainActivity activity); + void inject(PreparePaymentActivity activity); + + void inject(PrepareCryptonitOtherApiWithdrawalActivity activity); + + void inject(PrepareKrakenWithdrawalActivity activity); + void inject(LoadedWalletActivity activity); void inject(VerifyCardActivity activity); 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 03bf1b1378..64b42b8978 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherApiWithdrawalActivity.kt @@ -9,36 +9,42 @@ import android.nfc.Tag import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.view.View +import com.tangem.App +import com.tangem.Constant import com.tangem.data.network.CryptonitOtherApi import com.tangem.tangemcard.android.reader.NfcManager import com.tangem.domain.wallet.CoinEngineFactory import com.tangem.domain.wallet.TangemContext import com.tangem.data.Blockchain +import com.tangem.di.Navigator import com.tangem.wallet.R import kotlinx.android.synthetic.main.activity_prepare_cryptonit_other_api_withdrawal.* import java.io.IOException +import javax.inject.Inject class PrepareCryptonitOtherApiWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { companion object { val TAG: String = PrepareCryptonitOtherApiWithdrawalActivity::class.java.simpleName - private const val REQUEST_CODE_SCAN_QR_KEY = 1 - private const val REQUEST_CODE_SCAN_QR_SECRET = 2 - private const val REQUEST_CODE_SCAN_QR_USER_ID = 3 + + + } private lateinit var ctx: TangemContext private var nfcManager: NfcManager? = null private var cryptonit: CryptonitOtherApi? = null + @Inject + internal lateinit var navigator: Navigator @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_prepare_cryptonit_other_api_withdrawal) -// MainActivity.commonInit(applicationContext) + App.getNavigatorComponent().inject(this) nfcManager = NfcManager(this, this) @@ -84,18 +90,11 @@ class PrepareCryptonitOtherApiWithdrawalActivity : AppCompatActivity(), NfcAdapt // } } - ivCameraKey.setOnClickListener { - val intent = Intent(baseContext, QrScanActivity::class.java) - startActivityForResult(intent, REQUEST_CODE_SCAN_QR_KEY) - } - ivCameraSecret.setOnClickListener { - val intent = Intent(baseContext, QrScanActivity::class.java) - startActivityForResult(intent, REQUEST_CODE_SCAN_QR_SECRET) - } - ivCameraUserId.setOnClickListener { - val intent = Intent(baseContext, QrScanActivity::class.java) - startActivityForResult(intent, REQUEST_CODE_SCAN_QR_USER_ID) - } + ivCameraKey.setOnClickListener { navigator.showQrScanActivity(this, Constant.REQUEST_CODE_SCAN_QR_KEY) } + + ivCameraSecret.setOnClickListener { navigator.showQrScanActivity(this, Constant.REQUEST_CODE_SCAN_QR_SECRET) } + + ivCameraUserId.setOnClickListener { navigator.showQrScanActivity(this, Constant.REQUEST_CODE_SCAN_QR_USER_ID) } ivRefreshBalance.setOnClickListener { doRequestBalance() } @@ -179,15 +178,15 @@ class PrepareCryptonitOtherApiWithdrawalActivity : AppCompatActivity(), NfcAdapt super.onActivityResult(requestCode, resultCode, data) if (resultCode == Activity.RESULT_OK && data != null && data.extras!!.containsKey("QRCode")) { when (requestCode) { - REQUEST_CODE_SCAN_QR_KEY -> { + Constant.REQUEST_CODE_SCAN_QR_KEY -> { cryptonit!!.key = data.getStringExtra("QRCode") tvKey!!.text = cryptonit!!.key } - REQUEST_CODE_SCAN_QR_SECRET -> { + Constant.REQUEST_CODE_SCAN_QR_SECRET -> { cryptonit!!.secret = data.getStringExtra("QRCode") tvSecret!!.text = cryptonit!!.secretDescription } - REQUEST_CODE_SCAN_QR_USER_ID -> { + Constant.REQUEST_CODE_SCAN_QR_USER_ID -> { cryptonit!!.userId = data.getStringExtra("QRCode") tvUserID!!.text = cryptonit!!.userId } 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 7a7866bede..542362a3db 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt @@ -15,9 +15,12 @@ import android.view.View import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import android.widget.Toast +import com.tangem.App +import com.tangem.Constant import com.tangem.data.network.Kraken import com.tangem.tangemcard.android.reader.NfcManager import com.tangem.data.Blockchain +import com.tangem.di.Navigator import com.tangem.domain.wallet.CoinEngineFactory import com.tangem.domain.wallet.TangemContext import com.tangem.wallet.R @@ -26,13 +29,12 @@ import java.io.IOException import java.math.BigDecimal import java.net.URI import java.util.* +import javax.inject.Inject class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { companion object { val TAG: String = PrepareKrakenWithdrawalActivity::class.java.simpleName - - private const val REQUEST_CODE_SCAN_QR = 1 } private lateinit var ctx: TangemContext @@ -40,12 +42,15 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa private var kraken: Kraken? = null private var fee: BigDecimal? = null + @Inject + internal lateinit var navigator: Navigator + @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_prepare_kraken_withdrawal) -// MainActivity.commonInit(applicationContext) + App.getNavigatorComponent().inject(this) nfcManager = NfcManager(this, this) @@ -91,10 +96,8 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa } } - ivCamera.setOnClickListener { - val intent = Intent(baseContext, QrScanActivity::class.java) - startActivityForResult(intent, REQUEST_CODE_SCAN_QR) - } + + ivCamera.setOnClickListener { navigator.showQrScanActivity(this, Constant.REQUEST_CODE_SCAN_QR) } ivRefreshBalance.setOnClickListener { doRequestBalance() } @@ -240,7 +243,7 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa super.onActivityResult(requestCode, resultCode, data) if (resultCode == Activity.RESULT_OK && data != null && data.extras!!.containsKey("QRCode")) { when (requestCode) { - REQUEST_CODE_SCAN_QR -> { + Constant.REQUEST_CODE_SCAN_QR -> { val uri = URI(data.getStringExtra("QRCode")) val query = uri.query val params = query.split("&") diff --git a/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt index 26d44dd481..467e126bc3 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt @@ -12,8 +12,10 @@ import android.text.Html import android.view.View import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager +import com.tangem.App import com.tangem.Constant import com.tangem.data.Blockchain +import com.tangem.di.Navigator import com.tangem.domain.wallet.CoinEngineFactory import com.tangem.domain.wallet.TangemContext import com.tangem.tangemcard.android.reader.NfcManager @@ -21,6 +23,7 @@ import com.tangem.util.LOG import com.tangem.wallet.R import kotlinx.android.synthetic.main.activity_prepare_payment.* import java.io.IOException +import javax.inject.Inject class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { @@ -32,19 +35,21 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { ctx.saveToIntent(intent) return intent } - - private const val REQUEST_CODE_SCAN_QR = 1 - private const val REQUEST_CODE_SEND_PAYMENT = 2 } private lateinit var ctx: TangemContext private var nfcManager: NfcManager? = null + @Inject + internal lateinit var navigator: Navigator + @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_prepare_payment) + App.getNavigatorComponent().inject(this) + nfcManager = NfcManager(this, this) ctx = TangemContext.loadFromBundle(this, intent.extras) @@ -99,7 +104,7 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { } var checkAddress = false - if (engine1 != null) +// if (engine1 != null) checkAddress = engine1.validateAddress(etWallet.text.toString()) // check wallet address @@ -131,12 +136,10 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { intent.putExtra(Constant.EXTRA_FEE_INCLUDED, (rgIncFee!!.checkedRadioButtonId == R.id.rbFeeIn)) intent.putExtra(Constant.EXTRA_AMOUNT, strAmount) intent.putExtra(Constant.EXTRA_AMOUNT_CURRENCY, tvCurrency.text.toString()) - startActivityForResult(intent, REQUEST_CODE_SEND_PAYMENT) - } - ivCamera.setOnClickListener { - val intent = Intent(baseContext, QrScanActivity::class.java) - startActivityForResult(intent, REQUEST_CODE_SCAN_QR) + startActivityForResult(intent, Constant.REQUEST_CODE_SEND_PAYMENT__) } + + ivCamera.setOnClickListener { navigator.showQrScanActivity(this, Constant.REQUEST_CODE_SCAN_QR) } } public override fun onResume() { @@ -156,7 +159,7 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) - if (requestCode == REQUEST_CODE_SCAN_QR && resultCode == Activity.RESULT_OK && data != null && data.extras!!.containsKey("QRCode")) { + if (requestCode == Constant.REQUEST_CODE_SCAN_QR && resultCode == Activity.RESULT_OK && data != null && data.extras!!.containsKey("QRCode")) { var code = data.getStringExtra("QRCode") when (ctx.blockchain) { Blockchain.Bitcoin -> { @@ -178,7 +181,7 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { } } etWallet!!.setText(code) - } else if (requestCode == REQUEST_CODE_SEND_PAYMENT) { + } else if (requestCode == Constant.REQUEST_CODE_SEND_PAYMENT__) { setResult(resultCode, data) finish() } diff --git a/app/src/main/java/com/tangem/presentation/activity/QrScanActivity.kt b/app/src/main/java/com/tangem/presentation/activity/QrScanActivity.kt index de92ba3256..b7068df2e9 100644 --- a/app/src/main/java/com/tangem/presentation/activity/QrScanActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/QrScanActivity.kt @@ -2,18 +2,23 @@ package com.tangem.presentation.activity import android.Manifest import android.app.Activity +import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.os.Bundle import android.support.v4.app.ActivityCompat import android.support.v7.app.AppCompatActivity - import com.google.zxing.Result - import me.dm7.barcodescanner.zxing.ZXingScannerView class QrScanActivity : AppCompatActivity(), ZXingScannerView.ResultHandler { + companion object { + fun callingIntent(context: Context): Intent { + return Intent(context, QrScanActivity::class.java) + } + } + private var scannerView: ZXingScannerView? = null override fun onCreate(savedInstanceState: Bundle?) { @@ -26,14 +31,12 @@ class QrScanActivity : AppCompatActivity(), ZXingScannerView.ResultHandler { override fun onPause() { super.onPause() - if (scannerView != null) - scannerView!!.stopCamera() + scannerView?.stopCamera() } override fun onResume() { super.onResume() - if (scannerView != null) - scannerView!!.startCamera() + scannerView?.startCamera() } override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { @@ -60,9 +63,10 @@ class QrScanActivity : AppCompatActivity(), ZXingScannerView.ResultHandler { // programmatically initialize the scanner view scannerView = ZXingScannerView(this) setContentView(scannerView) + // register ourselves as a handler for scan results. - scannerView!!.setResultHandler(this) - scannerView!!.startCamera() + scannerView?.setResultHandler(this) + scannerView?.startCamera() } } \ No newline at end of file