Updated on 2026-08-14

This commit is contained in:
Tangem 2018-12-24 15:57:56 +03:00
parent 8e56feae88
commit 7d26bd34d3
7 changed files with 77 additions and 46 deletions

View file

@ -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
}

View file

@ -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)
}

View file

@ -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);

View file

@ -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
}

View file

@ -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("&")

View file

@ -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()
}

View file

@ -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<String>, 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()
}
}