From e1999ed34fc88eb24bc9b4e9a0b6a1ffee5e92cc Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 18 Oct 2018 17:49:35 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/data/nfc/SignPaymentTask.java | 19 ++++++++++++------- .../domain/cardReader/CardProtocol.java | 2 +- .../com/tangem/domain/wallet/EthEngine.java | 2 +- .../com/tangem/domain/wallet/TokenEngine.java | 4 ++-- .../activity/SignPaymentActivity.kt | 3 +++ .../dialog/NoExtendedLengthSupportDialog.kt | 5 +++-- .../presentation/fragment/VerifyCard.kt | 11 +++++++++++ app/src/main/res/values/strings.xml | 3 ++- 8 files changed, 35 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java b/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java index b6e0e78c65..6ed7228db8 100644 --- a/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java +++ b/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java @@ -15,6 +15,8 @@ import com.tangem.presentation.activity.SendTransactionActivity; import com.tangem.presentation.activity.SignPaymentActivity; import com.tangem.util.BTCUtils; +import java.io.IOException; + public class SignPaymentTask extends Thread { public static final String TAG = SignPaymentTask.class.getSimpleName(); @@ -90,13 +92,16 @@ public class SignPaymentTask extends Thread { mNotifications.onReadWait(mCard.getPauseBeforePIN2()); } - byte[] tx; -// try { - tx = engine.sign(txFee, txAmount, txIncFee, txOutAddress, mCard, protocol); -// } -// finally { -// mNotifications.onReadWait(0); -// } + byte[] tx = null; + try { + tx = engine.sign(txFee, txAmount, txIncFee, txOutAddress, mCard, protocol); + } + catch (IOException e) { + e.printStackTrace(); + protocol.setError(e); + } finally { + mNotifications.onReadWait(0); + } if (tx != null) { String txStr = BTCUtils.toHex(tx); diff --git a/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java b/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java index deb68604da..ca1f364178 100644 --- a/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java +++ b/app/src/main/java/com/tangem/domain/cardReader/CardProtocol.java @@ -307,7 +307,7 @@ public class CardProtocol { mNotifications.onReadAfterRequest(); } } catch (IOException e) { - if (e.getMessage().contains("length exceeds supported maximum") && mIsoDep.isExtendedLengthApduSupported()) { + if (e.getMessage().contains("length")) { throw new TangemException_ExtendedLengthNotSupported(e.getMessage()); } throw e; diff --git a/app/src/main/java/com/tangem/domain/wallet/EthEngine.java b/app/src/main/java/com/tangem/domain/wallet/EthEngine.java index 7095e46d0c..22e3515b24 100644 --- a/app/src/main/java/com/tangem/domain/wallet/EthEngine.java +++ b/app/src/main/java/com/tangem/domain/wallet/EthEngine.java @@ -96,7 +96,7 @@ public class EthEngine extends CoinEngine { BigDecimal d = convertToEth(dec); String s = d.toString(); - String pattern = "#0.000###############"; // If you like 4 zeros + String pattern = "#0.##################"; // If you like 4 zeros DecimalFormat myFormatter = new DecimalFormat(pattern); String output = myFormatter.format(d); return output; diff --git a/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java b/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java index e6e123be10..99c1dcfb62 100644 --- a/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java +++ b/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java @@ -101,7 +101,7 @@ public class TokenEngine extends CoinEngine { BigDecimal d = convertToEth(dec); String s = d.toString(); - String pattern = "#0.000###############"; // If you like 4 zeros + String pattern = "#0.##################"; // If you like 4 zeros DecimalFormat myFormatter = new DecimalFormat(pattern); String output = myFormatter.format(d); return output; @@ -128,7 +128,7 @@ public class TokenEngine extends CoinEngine { p = p.pow(getTokenDecimals(mCard)); BigDecimal l = d.divide(p); - String pattern = "#0.000###############"; // If you like 4 zeros + String pattern = "#0.##################"; // If you like 4 zeros DecimalFormat myFormatter = new DecimalFormat(pattern); String output = myFormatter.format(l); return output; diff --git a/app/src/main/java/com/tangem/presentation/activity/SignPaymentActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SignPaymentActivity.kt index b427df1901..f29b6063b6 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SignPaymentActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/SignPaymentActivity.kt @@ -22,6 +22,8 @@ import com.tangem.presentation.dialog.WaitSecurityDelayDialog import com.tangem.util.Util import com.tangem.wallet.R import kotlinx.android.synthetic.main.activity_sign_payment.* +import kotlinx.android.synthetic.main.notification_template_lines_media.* +import java.io.IOException class SignPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtocol.Notifications { @@ -194,6 +196,7 @@ class SignPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card progressBar!!.post { if (cardProtocol.error is CardProtocol.TangemException_ExtendedLengthNotSupported) { if (!NoExtendedLengthSupportDialog.allReadyShowed) { + NoExtendedLengthSupportDialog.message = getText(R.string.the_nfc_adapter_length_apdu).toString() + "\n" + getText(R.string.the_nfc_adapter_length_apdu_advice).toString() NoExtendedLengthSupportDialog().show(fragmentManager, NoExtendedLengthSupportDialog.TAG) } } else { diff --git a/app/src/main/java/com/tangem/presentation/dialog/NoExtendedLengthSupportDialog.kt b/app/src/main/java/com/tangem/presentation/dialog/NoExtendedLengthSupportDialog.kt index 95d73006ed..d1daceff29 100644 --- a/app/src/main/java/com/tangem/presentation/dialog/NoExtendedLengthSupportDialog.kt +++ b/app/src/main/java/com/tangem/presentation/dialog/NoExtendedLengthSupportDialog.kt @@ -12,14 +12,15 @@ class NoExtendedLengthSupportDialog : DialogFragment() { companion object { val TAG: String = NoExtendedLengthSupportDialog::class.java.simpleName var allReadyShowed = false + var message = ""// = R.string.the_nfc_adapter_length_apdu } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { return AlertDialog.Builder(activity) .setIcon(R.drawable.tangem_logo_small_new) .setTitle(R.string.warning) - .setMessage(R.string.the_nfc_adapter_length_apdu) - .setPositiveButton(R.string.got_it) { _, _ -> NoExtendedLengthSupportDialog.allReadyShowed = true } + .setMessage(message) + .setPositiveButton(R.string.got_it) { _, _ -> NoExtendedLengthSupportDialog.allReadyShowed = false } .create() } 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 7b81635eac..cc72c223ec 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt @@ -14,6 +14,7 @@ import android.view.ViewGroup import android.widget.PopupMenu import android.widget.Toast import com.tangem.domain.cardReader.NfcManager +import com.tangem.domain.wallet.Blockchain import com.tangem.domain.wallet.CoinEngineFactory import com.tangem.domain.wallet.PINStorage import com.tangem.domain.wallet.TangemCard @@ -297,6 +298,16 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { tvValidationNode.text = card!!.validationNodeDescription + if (card!!.blockchain == Blockchain.Bitcoin || card!!.blockchain == Blockchain.BitcoinTestNet || card!!.blockchain == Blockchain.BitcoinCash || card!!.blockchain == Blockchain.BitcoinCashTestNet) { + var gatheredUnspents = 0 + for (i in 0 until card!!.unspentTransactions.size) { + if (card!!.unspentTransactions[i].Raw.length > 1) gatheredUnspents++ + } + tvInputs.text = card!!.unspentTransactions.size.toString() + " unspents (" + gatheredUnspents.toString() + " recieved)" + } + else + tvInputs.text = "" + ivBlockchain.setImageResource(card!!.blockchain.getLogoImageResource(card!!.blockchainID, card!!.tokenSymbol)) if (card!!.isReusable!!) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d8447927f4..6e5e809db7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -56,7 +56,8 @@ Got it Warning Security delay - The NFC adapter of the device does not support extended length APDU, it\'s possible that some functions will not work! + Oops.. It seems your smartphone does not support such long NFC packets. + Try sending smaller amount or use a smartphone with full NFC support. Your money is at risk! This banknote has enforced security delay Please hold the banknote firmly\n until the operation is completed…