Updated on 2026-08-14
This commit is contained in:
parent
aff84ada71
commit
a083fdb713
6 changed files with 70 additions and 79 deletions
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 "";
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue