Updated on 2026-08-14

This commit is contained in:
Tangem 2018-08-13 10:48:02 +03:00
parent aff84ada71
commit a083fdb713
6 changed files with 70 additions and 79 deletions

View file

@ -29,8 +29,8 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
}
private var useCurrency: Boolean = false
private var mCard: TangemCard? = null
private var mNfcManager: NfcManager? = null
private var card: TangemCard? = null
private var nfcManager: NfcManager? = null
@SuppressLint("SetTextI18n")
override fun onCreate(savedInstanceState: Bundle?) {
@ -39,62 +39,62 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
MainActivity.commonInit(applicationContext)
mNfcManager = NfcManager(this, this)
nfcManager = NfcManager(this, this)
mCard = TangemCard(intent.getStringExtra("UID"))
mCard!!.loadFromBundle(intent.extras!!.getBundle("Card"))
card = TangemCard(intent.getStringExtra("UID"))
card!!.loadFromBundle(intent.extras!!.getBundle("Card"))
tvCardID.text = mCard!!.cidDescription
val engine = CoinEngineFactory.create(mCard!!.blockchain)
tvCardID.text = card!!.cidDescription
val engine = CoinEngineFactory.create(card!!.blockchain)
if (mCard!!.blockchain == Blockchain.Token) {
val html = Html.fromHtml(engine!!.getBalanceWithAlter(mCard))
if (card!!.blockchain == Blockchain.Token) {
val html = Html.fromHtml(engine!!.getBalanceWithAlter(card))
tvBalance.text = html
} else
tvBalance.text = engine!!.getBalanceWithAlter(mCard)
tvBalance.text = engine!!.getBalanceWithAlter(card)
if (mCard!!.remainingSignatures < 2)
if (card!!.remainingSignatures < 2)
etAmount!!.isEnabled = false
if (mCard!!.blockchain == Blockchain.Ethereum || mCard!!.blockchain == Blockchain.EthereumTestNet) {
tvCurrency.text = engine.getBalanceCurrency(mCard)
if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet) {
tvCurrency.text = engine.getBalanceCurrency(card)
useCurrency = false
etAmount!!.setText(engine.getBalanceValue(mCard))
} else if (mCard!!.blockchain == Blockchain.Bitcoin || mCard!!.blockchain == Blockchain.BitcoinTestNet) {
val balance = engine.getBalanceLong(mCard)!! / (mCard!!.blockchain.multiplier / 1000.0)
tvCurrency.text = "m" + mCard!!.blockchain.currency
etAmount!!.setText(engine.getBalanceValue(card))
} else if (card!!.blockchain == Blockchain.Bitcoin || card!!.blockchain == Blockchain.BitcoinTestNet) {
val balance = engine.getBalanceLong(card)!! / (card!!.blockchain.multiplier / 1000.0)
tvCurrency.text = "m" + card!!.blockchain.currency
useCurrency = true
val output = FormatUtil.DoubleToString(balance)
etAmount!!.setText(output)
} else if (mCard!!.blockchain == Blockchain.BitcoinCash || mCard!!.blockchain == Blockchain.BitcoinCashTestNet) {
val balance = engine.getBalanceLong(mCard)!! / (mCard!!.blockchain.multiplier / 1000.0)
tvCurrency.text = "m" + mCard!!.blockchain.currency
} else if (card!!.blockchain == Blockchain.BitcoinCash || card!!.blockchain == Blockchain.BitcoinCashTestNet) {
val balance = engine.getBalanceLong(card)!! / (card!!.blockchain.multiplier / 1000.0)
tvCurrency.text = "m" + card!!.blockchain.currency
useCurrency = true
val output = FormatUtil.DoubleToString(balance)
etAmount!!.setText(output)
} else {
tvCurrency.text = engine.getBalanceCurrency(mCard)
tvCurrency.text = engine.getBalanceCurrency(card)
useCurrency = false
etAmount!!.setText(engine.getBalanceValue(mCard))
etAmount!!.setText(engine.getBalanceValue(card))
}
if (mCard!!.blockchain == Blockchain.Bitcoin)
if (card!!.blockchain == Blockchain.Bitcoin)
etAmount.filters = arrayOf<InputFilter>(DecimalDigitsInputFilter(5))
if (card!!.blockchain == Blockchain.BitcoinCash)
etAmount.filters = arrayOf<InputFilter>(DecimalDigitsInputFilter(8))
if (mCard!!.blockchain == Blockchain.BitcoinCash)
etAmount.filters = arrayOf<InputFilter>(DecimalDigitsInputFilter(8))
if (mCard!!.blockchain == Blockchain.Ethereum)
if (card!!.blockchain == Blockchain.Ethereum)
etAmount.filters = arrayOf<InputFilter>(DecimalDigitsInputFilter(18))
// set listeners
btnVerify.setOnClickListener {
val strAmount: String = etAmount!!.text.toString().replace(",", ".")
val engine1 = CoinEngineFactory.create(mCard!!.blockchain)
val engine1 = CoinEngineFactory.create(card!!.blockchain)
try {
if (!engine.checkAmount(mCard, etAmount!!.text.toString()))
if (!engine.checkAmount(card, etAmount!!.text.toString()))
etAmount!!.error = getString(R.string.not_enough_funds_on_your_card)
} catch (e: Exception) {
etAmount!!.error = getString(R.string.unknown_amount_format)
@ -102,27 +102,25 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
var checkAddress = false
if (engine1 != null)
checkAddress = engine1.validateAddress(etWallet!!.text.toString(), mCard)
checkAddress = engine1.validateAddress(etWallet!!.text.toString(), card)
if (!checkAddress) {
etWallet.error = getString(R.string.incorrect_destination_wallet_address)
return@setOnClickListener
}
if (etWallet.text.toString() == mCard!!.wallet) {
if (etWallet.text.toString() == card!!.wallet) {
etWallet.error = getString(R.string.destination_wallet_address_equal_source_address)
return@setOnClickListener
}
val intent = Intent(baseContext, ConfirmPaymentActivity::class.java)
intent.putExtra("UID", mCard!!.uid)
intent.putExtra("Card", mCard!!.asBundle)
intent.putExtra("UID", card!!.uid)
intent.putExtra("Card", card!!.asBundle)
intent.putExtra("Wallet", etWallet!!.text.toString())
intent.putExtra(SignPaymentActivity.EXTRA_AMOUNT, strAmount)
startActivityForResult(intent, REQUEST_CODE_SEND_PAYMENT)
}
// set listeners
ivCamera.setOnClickListener {
val intent = Intent(baseContext, QrScanActivity::class.java)
startActivityForResult(intent, REQUEST_CODE_SCAN_QR)
@ -131,17 +129,17 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
public override fun onResume() {
super.onResume()
mNfcManager!!.onResume()
nfcManager!!.onResume()
}
public override fun onPause() {
super.onPause()
mNfcManager!!.onPause()
nfcManager!!.onPause()
}
public override fun onStop() {
super.onStop()
mNfcManager!!.onStop()
nfcManager!!.onStop()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
@ -163,7 +161,7 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
override fun onTagDiscovered(tag: Tag) {
try {
// Log.w(javaClass.name, "Ignore discovered tag!")
mNfcManager!!.ignoreTag(tag)
nfcManager!!.ignoreTag(tag)
} catch (e: IOException) {
e.printStackTrace()
}

View file

@ -29,8 +29,8 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
const val RESULT_INVALID_PIN = Activity.RESULT_FIRST_USER
}
private var mCard: TangemCard? = null
private var mNfcManager: NfcManager? = null
private var card: TangemCard? = null
private var nfcManager: NfcManager? = null
private var purgeTask: PurgeTask? = null
override fun onCreate(savedInstanceState: Bundle?) {
@ -39,25 +39,25 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
mNfcManager = NfcManager(this, this)
nfcManager = NfcManager(this, this)
MainActivity.commonInit(applicationContext)
mCard = TangemCard(intent.getStringExtra("UID"))
mCard!!.loadFromBundle(intent.extras!!.getBundle("Card"))
card = TangemCard(intent.getStringExtra("UID"))
card!!.loadFromBundle(intent.extras!!.getBundle("Card"))
tvCardID.text = mCard!!.cidDescription
tvCardID.text = card!!.cidDescription
progressBar.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
progressBar.visibility = View.INVISIBLE
}
public override fun onResume() {
super.onResume()
mNfcManager!!.onResume()
nfcManager!!.onResume()
}
public override fun onPause() {
mNfcManager!!.onPause()
nfcManager!!.onPause()
if (purgeTask != null) {
purgeTask!!.cancel(true)
}
@ -66,7 +66,7 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
public override fun onStop() {
// dismiss enable NFC dialog
mNfcManager!!.onStop()
nfcManager!!.onStop()
if (purgeTask != null) {
purgeTask!!.cancel(true)
}
@ -82,13 +82,13 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc
val sUID = Util.byteArrayToHexString(uid)
// Log.v(TAG, "UID: $sUID")
if (sUID == mCard!!.uid) {
isoDep.timeout = mCard!!.pauseBeforePIN2 + 65000
purgeTask = PurgeTask(this, mCard, mNfcManager, isoDep, this)
if (sUID == card!!.uid) {
isoDep.timeout = card!!.pauseBeforePIN2 + 65000
purgeTask = PurgeTask(this, card, nfcManager, isoDep, this)
purgeTask!!.start()
} else {
// this Log.d(TAG, "Mismatch card UID (" + sUID + " instead of " + mCard.getUID() + ")");
mNfcManager!!.ignoreTag(isoDep.tag)
// this Log.d(TAG, "Mismatch card UID (" + sUID + " instead of " + card.getUID() + ")");
nfcManager!!.ignoreTag(isoDep.tag)
}
} catch (e: Exception) {

View file

@ -34,7 +34,7 @@ class SignPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
}
private var nfcManager: NfcManager? = null
private var mCard: TangemCard? = null
private var card: TangemCard? = null
private var signPaymentTask: SignPaymentTask? = null
@ -53,14 +53,14 @@ class SignPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
nfcManager = NfcManager(this, this)
mCard = TangemCard(intent.getStringExtra("UID"))
mCard!!.loadFromBundle(intent.extras!!.getBundle("Card"))
card = TangemCard(intent.getStringExtra("UID"))
card!!.loadFromBundle(intent.extras!!.getBundle("Card"))
amountStr = intent.getStringExtra(EXTRA_AMOUNT)
feeStr = intent.getStringExtra("Fee")
outAddressStr = intent.getStringExtra("Wallet")
tvCardID.text = mCard!!.cidDescription
tvCardID.text = card!!.cidDescription
progressBar = findViewById(R.id.progressBar)
progressBar!!.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
@ -76,16 +76,16 @@ class SignPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card
val sUID = Util.byteArrayToHexString(uid)
// Log.v(TAG, "UID: $sUID")
if (sUID == mCard!!.uid) {
if (sUID == card!!.uid) {
if (lastReadSuccess) {
isoDep.timeout = mCard!!.pauseBeforePIN2 + 5000
isoDep.timeout = card!!.pauseBeforePIN2 + 5000
} else {
isoDep.timeout = mCard!!.pauseBeforePIN2 + 65000
isoDep.timeout = card!!.pauseBeforePIN2 + 65000
}
signPaymentTask = SignPaymentTask(this, mCard, nfcManager, isoDep, this, amountStr, feeStr, outAddressStr)
signPaymentTask = SignPaymentTask(this, card, nfcManager, isoDep, this, amountStr, feeStr, outAddressStr)
signPaymentTask!!.start()
} else {
// Log.d(TAG, "Mismatch card UID (" + sUID + " instead of " + mCard!!.uid + ")")
// Log.d(TAG, "Mismatch card UID (" + sUID + " instead of " + card!!.uid + ")")
nfcManager!!.ignoreTag(isoDep.tag)
}

View file

@ -14,7 +14,6 @@ import android.support.v4.app.Fragment
import android.support.v4.content.ContextCompat
import android.support.v4.widget.SwipeRefreshLayout
import android.text.Html
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -91,7 +90,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
private var timerHideErrorAndMessage: Timer? = null
private var newPIN = ""
private var newPIN2 = ""
private var mCardProtocol: CardProtocol? = null
private var cardProtocol: CardProtocol? = null
private var onlineVerifyTask: OnlineVerifyTask? = null
@ -210,8 +209,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
}
btnDetails.setOnClickListener {
if (mCardProtocol != null)
openVerifyCard(mCardProtocol!!)
if (cardProtocol != null)
openVerifyCard(cardProtocol!!)
else
showSingleToast(R.string.need_attach_card_again)
}
@ -551,7 +550,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
if (cardProtocol.error == null) {
rlProgressBar.post {
rlProgressBar.visibility = View.GONE
mCardProtocol = cardProtocol
this.cardProtocol = cardProtocol
refresh()
}
} else {

View file

@ -16,14 +16,7 @@ public class DecimalDigitsInputFilter implements InputFilter {
}
@Override
public CharSequence filter(CharSequence source,
int start,
int end,
Spanned dest,
int dstart,
int dend) {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
int dotPos = -1;
int len = dest.length();
for (int i = 0; i < len; i++) {
@ -33,17 +26,18 @@ public class DecimalDigitsInputFilter implements InputFilter {
break;
}
}
if (dotPos >= 0) {
if (dotPos >= 0) {
// protects against many dots
if (source.equals(".") || source.equals(","))
{
if (source.equals(".") || source.equals(",")) {
return "";
}
// if the text is entered before the dot
if (dend <= dotPos) {
return null;
}
if (len - dotPos > decimalDigits) {
return "";
}