From 864059f38193dfcd71b2b51531dddc72bbc37d75 Mon Sep 17 00:00:00 2001 From: Tangem Date: Sun, 14 Oct 2018 15:03:18 +0300 Subject: [PATCH 1/9] Updated on 2026-08-14 --- .../activity/ConfirmPaymentActivity.kt | 128 ++++++++---------- .../activity/SendTransactionActivity.kt | 84 +++++------- .../presentation/fragment/LoadedWallet.kt | 92 ++++++------- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 131 insertions(+), 175 deletions(-) diff --git a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt index 143beb4802..3fddfb953e 100644 --- a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt @@ -40,26 +40,22 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { private var serverApiHelper: ServerApiHelper = ServerApiHelper() private var serverApiHelperElectrum: ServerApiHelperElectrum = ServerApiHelperElectrum() - var card: TangemCard? = null - var feeRequestSuccess = false - var balanceRequestSuccess = false - var etAmount: EditText? = null - var etFee: EditText? = null - var rgFee: RadioGroup? = null - var progressBar: ProgressBar? = null - var btnSend: Button? = null - - var minFee: String? = null - var maxFee: String? = null - var normalFee: String? = null - + private var card: TangemCard? = null + private var feeRequestSuccess = false + private var balanceRequestSuccess = false + private var etAmount: EditText? = null + private var etFee: EditText? = null + private var rgFee: RadioGroup? = null + private var progressBar: ProgressBar? = null + private var btnSend: Button? = null + private var minFee: String? = null + private var maxFee: String? = null + private var normalFee: String? = null private var isIncludeFee: Boolean = true - var minFeeInInternalUnits: Long? = 0L + private var minFeeInInternalUnits: Long? = 0L private var requestPIN2Count = 0 - var nodeCheck = false - var dtVerified: Date? = null - - + private var nodeCheck = false + private var dtVerified: Date? = null private var calcSize: Int = 0 override fun onCreate(savedInstanceState: Bundle?) { @@ -175,7 +171,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { calendar.add(Calendar.MINUTE, -1) if (dtVerified == null || dtVerified!!.before(calendar.time)) { - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.the_obtained_data_is_outdated_try_again)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.the_obtained_data_is_outdated_try_again)) return@setOnClickListener } @@ -190,20 +186,20 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { val txAmount = etAmount!!.text.toString() if (!engineCoin.hasBalanceInfo(card)) { - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_check_balance_no_connection_with_blockchain_nodes)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_check_balance_no_connection_with_blockchain_nodes)) return@setOnClickListener } else if (!engineCoin.isBalanceNotZero(card)) { - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.the_wallet_is_empty)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.the_wallet_is_empty)) return@setOnClickListener } else if (!engineCoin.checkUnspentTransaction(card)) { - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.please_wait_for_confirmation_of_incoming_transaction)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.please_wait_for_confirmation_of_incoming_transaction)) return@setOnClickListener } if (!engineCoin.checkAmountValue(card, txAmount, txFee, minFeeInInternalUnits, isIncludeFee)) { - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.not_enough_funds_on_your_card)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.not_enough_funds_on_your_card)) return@setOnClickListener } @@ -235,7 +231,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { } } catch (e: JSONException) { e.printStackTrace() - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_check_balance_no_connection_with_blockchain_nodes)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_check_balance_no_connection_with_blockchain_nodes)) } } } @@ -255,13 +251,13 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { if (fee == BigDecimal.ZERO) { progressBar!!.visibility = View.INVISIBLE - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_calculate_fee_wrong_data_received_from_node)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_calculate_fee_wrong_data_received_from_node)) } if (calcSize.toLong() != 0L) { fee = fee.multiply(BigDecimal(calcSize.toLong())).divide(BigDecimal(1024)) // per Kb -> per byte } else { - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_calculate_fee_tx_length_unknown)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_calculate_fee_tx_length_unknown)) } progressBar!!.visibility = View.INVISIBLE @@ -303,7 +299,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { ServerApiHelper.INFURA_ETH_GAS_PRICE -> { var gasPrice = infuraResponse.result gasPrice = gasPrice.substring(2) - // Rounding gas price to integer gwei + // rounding gas price to integer gwei val l = BigInteger(gasPrice, 16).divide(BigInteger.valueOf(1000000000L)).multiply(BigInteger.valueOf(1000000000L)) val m = if (card!!.blockchain == Blockchain.Token) BigInteger.valueOf(60000) else BigInteger.valueOf(21000) @@ -322,11 +318,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { dtVerified = Date() minFeeInInternalUnits = card!!.internalUnitsFromString(normalFeeInGwei) - Log.i("eth_gas_price", gasPrice) - } - - else -> { - +// Log.i("eth_gas_price", gasPrice) } } } @@ -334,11 +326,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { override fun onInfuraFail(method: String, message: String) { when (method) { ServerApiHelper.INFURA_ETH_GAS_PRICE -> { - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) - } - - else -> { - + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) } } } @@ -347,22 +335,6 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { serverApiHelper.setInfuraResponse(infuraBodyListener) } - private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) { - if (UtilHelper.isOnline(this)) { - serverApiHelperElectrum.electrumRequestData(card, electrumRequest) - } else { - Toast.makeText(this, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() - } - } - - private fun requestInfura(method: String) { - if (UtilHelper.isOnline(this)) { - serverApiHelper.infura(method, 67, card!!.wallet, "", "") - } else { - Toast.makeText(this, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() - } - } - public override fun onResume() { super.onResume() nfcManager!!.onResume() @@ -427,16 +399,8 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { return super.onKeyDown(keyCode, event) } - fun finishActivityWithError(errorCode: Int, message: String) { - val intent = Intent() - intent.putExtra("message", message) - setResult(errorCode, intent) - finish() - } - override fun onTagDiscovered(tag: Tag) { try { -// Log.w(getClass().getName(), "Ignore discovered tag!"); nfcManager!!.ignoreTag(tag) } catch (e: IOException) { e.printStackTrace() @@ -461,7 +425,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { fullAmount += unspentOutputs[i].value } - // Get first unspent + // get first unspent val outPut = unspentOutputs[0] val outPutIndex = outPut.outputIndex @@ -470,7 +434,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { val fees = FormatUtil.ConvertStringToLong(outFee) var amount = FormatUtil.ConvertStringToLong(outAmount) - amount = amount - fees + amount -= fees val change = fullAmount - fees - amount @@ -482,17 +446,14 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { for (i in unspentOutputs.indices) { val newTX = BTCUtils.buildTXForSign(myAddress, outputAddress, myAddress, unspentOutputs, i, amount, change) - val hashData = Util.calculateSHA256(newTX) val doubleHashData = Util.calculateSHA256(hashData) - - // Log.e("TX_BODY_1", BTCUtils.toHex(newTX)); - // Log.e("TX_HASH_1", BTCUtils.toHex(hashData)); - // Log.e("TX_HASH_2", BTCUtils.toHex(doubleHashData)); +// Log.e("TX_BODY_1", BTCUtils.toHex(newTX)) +// Log.e("TX_HASH_1", BTCUtils.toHex(hashData)) +// Log.e("TX_HASH_2", BTCUtils.toHex(doubleHashData)) unspentOutputs[i].bodyDoubleHash = doubleHashData unspentOutputs[i].bodyHash = hashData - hashesForSign[i] = doubleHashData } @@ -510,26 +471,47 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { return realTX.size } - fun doSetFee(checkedRadioButtonId: Int) { + private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) { + if (UtilHelper.isOnline(this)) { + serverApiHelperElectrum.electrumRequestData(card, electrumRequest) + } else + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) + } + + private fun requestInfura(method: String) { + if (UtilHelper.isOnline(this)) { + serverApiHelper.infura(method, 67, card!!.wallet, "", "") + } else + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) + } + + private fun doSetFee(checkedRadioButtonId: Int) { var txtFee = "" when (checkedRadioButtonId) { R.id.rbMinimalFee -> if (minFee != null) txtFee = minFee.toString() else - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) R.id.rbNormalFee -> if (normalFee != null) txtFee = normalFee.toString() else - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) R.id.rbMaximumFee -> if (maxFee != null) txtFee = maxFee.toString() else - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) + finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) } etFee!!.setText(txtFee.replace(',', '.')) } + private fun finishWithError(errorCode: Int, message: String) { + val intent = Intent() + intent.putExtra("message", message) + setResult(errorCode, intent) + finish() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt index 69345604d1..6c1b672c82 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt @@ -5,13 +5,12 @@ import android.nfc.NfcAdapter import android.nfc.Tag import android.os.Bundle import android.support.v7.app.AppCompatActivity -import android.util.Log import android.view.KeyEvent import android.widget.Toast +import com.tangem.data.network.ElectrumRequest import com.tangem.data.network.ServerApiHelper import com.tangem.data.network.ServerApiHelperElectrum import com.tangem.data.network.model.InfuraResponse -import com.tangem.data.network.ElectrumRequest import com.tangem.domain.cardReader.NfcManager import com.tangem.domain.wallet.Blockchain import com.tangem.domain.wallet.CoinEngineFactory @@ -33,7 +32,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { private var serverApiHelper: ServerApiHelper = ServerApiHelper() private var serverApiHelperElectrum: ServerApiHelperElectrum = ServerApiHelperElectrum() - var card: TangemCard? = null + private var card: TangemCard? = null private var tx: String? = null private var nfcManager: NfcManager? = null @@ -70,29 +69,26 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { if (electrumRequest!!.isMethod(ElectrumRequest.METHOD_SendTransaction)) { try { var hashTX = electrumRequest.resultString - try { if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) { hashTX = hashTX.substring(2) } - Log.e("TX_RESULT", hashTX) finishWithSuccess() } catch (e: Exception) { e.printStackTrace() -// finishWithError(hashTX) + finishWithError(hashTX) requestElectrum(card!!, ElectrumRequest.broadcast(card!!.wallet, tx)) } - } catch (e: JSONException) { e.printStackTrace() -// finishWithError(e.toString()) + finishWithError(e.toString()) requestElectrum(card!!, ElectrumRequest.broadcast(card!!.wallet, tx)) } } } override fun onElectrumFail(message: String?) { - + finishWithError(message!!) } } @@ -109,6 +105,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { val tmp = infuraResponse.result hashTX = tmp } catch (e: JSONException) { + finishWithError(e.message!!) return } @@ -119,18 +116,13 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { val nonce = card!!.confirmedTXCount nonce.add(BigInteger.valueOf(1)) card!!.confirmedTXCount = nonce -// Log.e("TX_RESULT", hashTX) finishWithSuccess() - } catch (e: Exception) { e.printStackTrace() + finishWithError(e.message!!) } } - - else -> { - - } } } @@ -139,10 +131,6 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { ServerApiHelper.INFURA_ETH_SEND_RAW_TRANSACTION -> { finishWithError(message) } - - else -> { - - } } } } @@ -160,36 +148,6 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { return super.onKeyDown(keyCode, event) } - private fun requestInfura(method: String, contract: String) { - if (UtilHelper.isOnline(this)) { - serverApiHelper.infura(method, 67, card!!.wallet, contract, tx) - } else { - Toast.makeText(this, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() - } - } - - private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) { - if (UtilHelper.isOnline(this)) { - serverApiHelperElectrum.electrumRequestData(card, electrumRequest) - } else { - Toast.makeText(this, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() - } - } - - fun finishWithError(message: String) { - val intent = Intent() - intent.putExtra("message", String.format(getString(R.string.try_again_failed_to_send_transaction), message)) - setResult(RESULT_CANCELED, intent) - finish() - } - - fun finishWithSuccess() { - val intent = Intent() - intent.putExtra("message", getString(R.string.transaction_has_been_successfully_signed)) - setResult(RESULT_OK, intent) - finish() - } - public override fun onResume() { super.onResume() nfcManager!!.onResume() @@ -207,12 +165,38 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { override fun onTagDiscovered(tag: Tag) { try { -// Log.w(javaClass.name, "Ignore discovered tag!") nfcManager!!.ignoreTag(tag) } catch (e: IOException) { e.printStackTrace() } + } + private fun requestInfura(method: String, contract: String) { + if (UtilHelper.isOnline(this)) { + serverApiHelper.infura(method, 67, card!!.wallet, contract, tx) + } else + finishWithError(getString(R.string.no_connection)) + } + + private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) { + if (UtilHelper.isOnline(this)) { + serverApiHelperElectrum.electrumRequestData(card, electrumRequest) + } else + finishWithError(getString(R.string.no_connection)) + } + + private fun finishWithSuccess() { + val intent = Intent() + intent.putExtra("message", getString(R.string.transaction_has_been_successfully_signed)) + setResult(RESULT_OK, intent) + finish() + } + + private fun finishWithError(message: String) { + val intent = Intent() + intent.putExtra("message", String.format(getString(R.string.try_again_failed_to_send_transaction), message)) + setResult(RESULT_CANCELED, intent) + finish() } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index ec3684e06f..0600fe70d2 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -55,13 +55,13 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific private const val REQUEST_CODE_RECEIVE_PAYMENT = 9 } - private var singleToast: Toast? = null private var nfcManager: NfcManager? = null private var serverApiHelper: ServerApiHelper = ServerApiHelper() private var serverApiHelperElectrum: ServerApiHelperElectrum = ServerApiHelperElectrum() - var card: TangemCard? = null + private var singleToast: Toast? = null + private var card: TangemCard? = null private var lastTag: Tag? = null private var lastReadSuccess = true private var verifyCardTask: VerifyCardTask? = null @@ -74,9 +74,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific private val inactiveColor: ColorStateList by lazy { resources.getColorStateList(R.color.btn_dark) } private val activeColor: ColorStateList by lazy { resources.getColorStateList(R.color.colorAccent) } private var requestCounter = 0 - private var timerRepeatRefresh: Timer? = null - private lateinit var localStorage: LocalStorage override fun onCreate(savedInstanceState: Bundle?) { @@ -104,7 +102,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific if (card!!.blockchain == Blockchain.Token) tvBalance.setSingleLine(false) - //ivTangemCard.setImageResource(card!!.cardImageResource) ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(card!!)) val engine = CoinEngineFactory.create(card!!.blockchain) @@ -171,7 +168,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific else -> { } } - } dialog.show() } else { @@ -294,8 +290,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } override fun onElectrumFail(method: String?) { -// srl.isRefreshing = false - Log.e(TAG, "FAIL $method") + srl!!.isRefreshing = false +// Log.e(TAG, "FAIL $method") } } @@ -456,10 +452,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific e.printStackTrace() } } - - else -> { - - } } requestCounter-- @@ -492,38 +484,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } - private fun requestInfura(method: String, contract: String) { - if (UtilHelper.isOnline(activity!!)) { - requestCounter++ - serverApiHelper.infura(method, 67, card!!.wallet, contract, "") - } else { - Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() - srl!!.isRefreshing = false - } - } - - private fun requestCardVerify() { - if (UtilHelper.isOnline(activity!!)) { - if ((card!!.isOnlineVerified == null || !card!!.isOnlineVerified)) { - requestCounter++ - serverApiHelper.cardVerifyAndGetInfo(card) - } - } else { - Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() - srl!!.isRefreshing = false - } - } - - private fun requestRateInfo(cryptoId: String) { - if (UtilHelper.isOnline(activity!!)) { - requestCounter++ - serverApiHelper.rateInfoData(cryptoId) - } else { - Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() - srl!!.isRefreshing = false - } - } - override fun onResume() { super.onResume() nfcManager!!.onResume() @@ -883,7 +843,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific // Ethereum else if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet) { - requestInfura(ServerApiHelper.INFURA_ETH_GET_BALANCE, "") requestInfura(ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT, "") requestInfura(ServerApiHelper.INFURA_ETH_GET_PENDING_COUNT, "") @@ -892,19 +851,50 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific // Token else if (card!!.blockchain == Blockchain.Token) { - requestInfura(ServerApiHelper.INFURA_ETH_CALL, engine.getContractAddress(card)) requestRateInfo("ethereum") } } - fun prepareResultIntent(): Intent { - val data = Intent() - data.putExtra("UID", card!!.uid) - data.putExtra("Card", card!!.asBundle) - return data + private fun requestInfura(method: String, contract: String) { + if (UtilHelper.isOnline(activity!!)) { + requestCounter++ + serverApiHelper.infura(method, 67, card!!.wallet, contract, "") + } else { + Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() + srl!!.isRefreshing = false + } } + private fun requestCardVerify() { + if (UtilHelper.isOnline(activity!!)) { + if ((card!!.isOnlineVerified == null || !card!!.isOnlineVerified)) { + requestCounter++ + serverApiHelper.cardVerifyAndGetInfo(card) + } + } else { + Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() + srl!!.isRefreshing = false + } + } + + private fun requestRateInfo(cryptoId: String) { + if (UtilHelper.isOnline(activity!!)) { + requestCounter++ + serverApiHelper.rateInfoData(cryptoId) + } else { + Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() + srl!!.isRefreshing = false + } + } + +// private fun prepareResultIntent(): Intent { +// val data = Intent() +// data.putExtra("UID", card!!.uid) +// data.putExtra("Card", card!!.asBundle) +// return data +// } + private fun openVerifyCard(cardProtocol: CardProtocol) { val intent = Intent(context, VerifyCardActivity::class.java) intent.putExtra("UID", cardProtocol.card.uid) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2c71ed439a..2bb5bc8270 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,7 +2,7 @@ OK Cancel - Отсутствует подключение к сети + No network connection Continue Not found Not ISO tag! From 79e0459fa27cd8b759b2708a317e26c3ce18a771 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 15 Oct 2018 12:11:48 +0300 Subject: [PATCH 2/9] Updated on 2026-08-14 --- app/build.gradle | 2 +- .../presentation/fragment/LoadedWallet.kt | 22 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 195367b507..718aa831cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { applicationId "com.tangem.wallet" minSdkVersion 21 targetSdkVersion 27 - versionCode 89 + versionCode 90 versionName "0.89.2." + generateVersionName() testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index 0600fe70d2..6933669039 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -473,17 +473,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific serverApiHelper.setInfuraResponse(infuraBodyListener) } - private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) { - if (UtilHelper.isOnline(activity!!)) { - requestCounter++ - serverApiHelperElectrum.electrumRequestData(card, electrumRequest) - } else { - Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() - srl!!.isRefreshing = false - } - - } - override fun onResume() { super.onResume() nfcManager!!.onResume() @@ -856,6 +845,17 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } } + private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) { + if (UtilHelper.isOnline(activity!!)) { + requestCounter++ + serverApiHelperElectrum.electrumRequestData(card, electrumRequest) + } else { + Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() + srl!!.isRefreshing = false + } + + } + private fun requestInfura(method: String, contract: String) { if (UtilHelper.isOnline(activity!!)) { requestCounter++ From 8020425374e863ec6c44033fe0ff8fb0b7086ad3 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Oct 2018 14:30:30 +0300 Subject: [PATCH 3/9] Updated on 2026-08-14 --- app/build.gradle | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 718aa831cd..d333a0b7ed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,7 +40,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } - buildToolsVersion '28.0.2' + buildToolsVersion '28.0.3' } dependencies { diff --git a/build.gradle b/build.gradle index 471a9402da..a92daa08c4 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0' + classpath 'com.android.tools.build:gradle:3.2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } From ad42818b8437769c100a2188a798e35f3f629902 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Oct 2018 15:31:31 +0300 Subject: [PATCH 4/9] Updated on 2026-08-14 --- .../tangem/data/network/ServerApiHelper.java | 17 ++-- .../presentation/fragment/LoadedWallet.kt | 94 +++++++++++-------- 2 files changed, 66 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/com/tangem/data/network/ServerApiHelper.java b/app/src/main/java/com/tangem/data/network/ServerApiHelper.java index a6c6a1f44e..9f3535ba18 100644 --- a/app/src/main/java/com/tangem/data/network/ServerApiHelper.java +++ b/app/src/main/java/com/tangem/data/network/ServerApiHelper.java @@ -103,7 +103,6 @@ public class ServerApiHelper { public interface InfuraBodyListener { void onInfuraSuccess(String method, InfuraResponse infuraResponse); - void onInfuraFail(String method, String message); } @@ -168,7 +167,8 @@ public class ServerApiHelper { private CardVerifyAndGetInfoListener cardVerifyAndGetInfoListener; public interface CardVerifyAndGetInfoListener { - void onCardVerifyAndGetInfo(CardVerifyAndGetInfo.Response cardVerifyAndGetArtworkResponse); + void onSuccess(CardVerifyAndGetInfo.Response cardVerifyAndGetArtworkResponse); + void onFail(String message); } public void setCardVerifyAndGetInfoListener(CardVerifyAndGetInfoListener listener) { @@ -189,14 +189,17 @@ public class ServerApiHelper { public void onResponse(@NonNull Call call, @NonNull Response response) { if (response.code() == 200) { CardVerifyAndGetInfo.Response cardVerifyAndGetArtworkResponse = response.body(); - cardVerifyAndGetInfoListener.onCardVerifyAndGetInfo(cardVerifyAndGetArtworkResponse); + cardVerifyAndGetInfoListener.onSuccess(cardVerifyAndGetArtworkResponse); Log.i(TAG, "cardVerifyAndGeInfo onResponse " + response.code()); - } else + } else { + cardVerifyAndGetInfoListener.onFail(String.valueOf(response.code())); Log.e(TAG, "cardVerifyAndGetInfo onResponse " + response.code()); + } } @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { + cardVerifyAndGetInfoListener.onFail(t.getMessage()); Log.e(TAG, "cardVerifyAndGetInfo onFailure " + t.getMessage()); } }); @@ -209,7 +212,8 @@ public class ServerApiHelper { private ArtworkListener artworkListener; public interface ArtworkListener { - void onArtwork(String artworkId, InputStream inputStream, Date updateDate); + void onSuccess(String artworkId, InputStream inputStream, Date updateDate); + void onFail(String message); } public void setArtworkListener(ArtworkListener listener) { @@ -228,7 +232,7 @@ public class ServerApiHelper { try { ResponseBody body = response.body(); if (body != null) { - artworkListener.onArtwork(artworkId, body.byteStream(), updateDate); + artworkListener.onSuccess(artworkId, body.byteStream(), updateDate); } } catch (Exception e) { e.printStackTrace(); @@ -238,6 +242,7 @@ public class ServerApiHelper { @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { + artworkListener.onFail(t.getMessage()); Log.e(TAG, "getArtwork onFailure " + t.getMessage()); } }); diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index f720a2ed75..c219236b6e 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -24,6 +24,7 @@ import com.tangem.data.network.ServerApiHelper import com.tangem.data.network.ServerApiHelperElectrum import com.tangem.data.network.model.InfuraResponse import com.tangem.data.network.ElectrumRequest +import com.tangem.data.network.model.CardVerifyAndGetInfo import com.tangem.data.nfc.VerifyCardTask import com.tangem.domain.cardReader.CardProtocol import com.tangem.domain.cardReader.NfcManager @@ -38,6 +39,7 @@ import com.tangem.wallet.BuildConfig import com.tangem.wallet.R import kotlinx.android.synthetic.main.fr_loaded_wallet.* import org.json.JSONException +import java.io.InputStream import java.math.BigInteger import java.util.* @@ -286,59 +288,75 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } - if (requestCounter == 0) updateViews() + if (requestCounter == 0) + updateViews() } override fun onElectrumFail(method: String?) { srl!!.isRefreshing = false -// Log.e(TAG, "FAIL $method") } } serverApiHelperElectrum.setElectrumRequestData(electrumBodyListener) - // request card verify listener - serverApiHelper.setCardVerifyAndGetInfoListener { - requestCounter-- - if (requestCounter == 0) srl!!.isRefreshing = false + // request card verify and get info listener + val cardVerifyAndGetInfoListener: ServerApiHelper.CardVerifyAndGetInfoListener = object : ServerApiHelper.CardVerifyAndGetInfoListener { + override fun onSuccess(cardVerifyAndGetArtworkResponse: CardVerifyAndGetInfo.Response?) { + requestCounter-- + if (requestCounter == 0) srl!!.isRefreshing = false - val result = it.results!![0] - if (result.error != null) { - card!!.isOnlineVerified = false - return@setCardVerifyAndGetInfoListener - } - card!!.isOnlineVerified = result.passed - - if (requestCounter == 0) updateViews() - - if (!result.passed) return@setCardVerifyAndGetInfoListener - - if (localStorage.checkBatchInfoChanged(card!!, result)) { - Log.w(TAG, "Batch ${result.batch} info changed to '$result'") - ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(card!!)) - localStorage.applySubstitution(card!!) - if (card!!.blockchain == Blockchain.Token || card!!.blockchain == Blockchain.Ethereum) { - card!!.setBlockchainIDFromCard(Blockchain.Ethereum.id) + val result = cardVerifyAndGetArtworkResponse?.results!![0] + if (result.error != null) { + card!!.isOnlineVerified = false + return } - refresh() - } - if (result.artwork != null && localStorage.checkNeedUpdateArtwork(result.artwork)) { - Log.w(TAG, "Artwork '${result.artwork!!.id}' updated, need download") - serverApiHelper.requestArtwork(result.artwork!!.id, result.artwork!!.getUpdateDate(), card!!) - updateViews() - } -// Log.i(TAG, "setCardVerify " + it.results!![0].passed) - } + card!!.isOnlineVerified = result.passed - serverApiHelper.setArtworkListener { artworkId, inputStream, updateDate -> - Log.w(TAG, "Artwork '$artworkId' downloaded") - localStorage.updateArtwork(artworkId, inputStream, updateDate) - ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(card!!)) + if (requestCounter == 0) updateViews() + + if (!result.passed) return + + if (localStorage.checkBatchInfoChanged(card!!, result)) { + Log.w(TAG, "Batch ${result.batch} info changed to '$result'") + ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(card!!)) + localStorage.applySubstitution(card!!) + if (card!!.blockchain == Blockchain.Token || card!!.blockchain == Blockchain.Ethereum) { + card!!.setBlockchainIDFromCard(Blockchain.Ethereum.id) + } + refresh() + } + if (result.artwork != null && localStorage.checkNeedUpdateArtwork(result.artwork)) { + Log.w(TAG, "Artwork '${result.artwork!!.id}' updated, need download") + serverApiHelper.requestArtwork(result.artwork!!.id, result.artwork!!.getUpdateDate(), card!!) + updateViews() + } +// Log.i(TAG, "setCardVerify " + it.results!![0].passed) + } + + override fun onFail(message: String?) { + requestCounter-- + if (requestCounter == 0) + srl!!.isRefreshing = false + } } + serverApiHelper.setCardVerifyAndGetInfoListener(cardVerifyAndGetInfoListener) + + // request artwork listener + val artworkListener: ServerApiHelper.ArtworkListener = object : ServerApiHelper.ArtworkListener { + override fun onSuccess(artworkId: String?, inputStream: InputStream?, updateDate: Date?) { + localStorage.updateArtwork(artworkId!!, inputStream!!, updateDate!!) + ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(card!!)) + Log.w(TAG, "Artwork '$artworkId' downloaded") + } + + override fun onFail(message: String?) { + + } + } + serverApiHelper.setArtworkListener(artworkListener) // request rate info listener serverApiHelper.setRateInfoData { - requestCounter-- val rate = it.priceUsd.toFloat() card!!.rate = rate @@ -348,7 +366,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific srl!!.isRefreshing = false updateViews() } -// Log.i(TAG, "setRateInfoData $rate") } // request eth get balance, eth get transaction count, eth call, eth sendRawTransaction listener @@ -469,7 +486,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } } } - serverApiHelper.setInfuraResponse(infuraBodyListener) } From 3c5ab9543ae8fa6a42cae74c1306a988dc423418 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Oct 2018 15:52:36 +0300 Subject: [PATCH 5/9] Updated on 2026-08-14 --- .../com/tangem/domain/wallet/TangemCard.java | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java index e5af43c198..9c8cda200e 100644 --- a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java +++ b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java @@ -3,17 +3,13 @@ package com.tangem.domain.wallet; import android.os.Bundle; import com.google.common.base.Strings; -import com.tangem.data.network.Kraken; import com.tangem.domain.cardReader.SettingsMask; -import com.tangem.util.BTCUtils; import com.tangem.util.FormatUtil; import com.tangem.util.Util; -import com.tangem.wallet.R; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; -import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; @@ -58,18 +54,22 @@ public class TangemCard { } return countConfirmedTX; } + public void setConfirmedTXCount(BigInteger count) { countConfirmedTX = count; } + public BigInteger getUnconfirmedTXCount() { if (countUnconfirmedTX == null) { countUnconfirmedTX = BigInteger.valueOf(0); } return countUnconfirmedTX; } + public void setUnconfirmedTXCount(BigInteger count) { countUnconfirmedTX = count; } + public float getRate() { return rate; } @@ -107,17 +107,17 @@ public class TangemCard { setBlockchainName(newName); } - private String blochchainName = ""; + private String blockchainName = ""; public void setBlockchainName(String name) { - blochchainName = name; + blockchainName = name; } public String getBlockchainName() { - if (Strings.isNullOrEmpty(blochchainName)) + if (Strings.isNullOrEmpty(blockchainName)) return getBlockchain().getOfficialName(); - return blochchainName; + return blockchainName; } public void setBlockchainIDFromCard(String blockchainID) { @@ -285,11 +285,12 @@ public class TangemCard { public void clearInfo() { balanceConfirmed = null; balanceUnconfirmed = null; - mUnspentTransactions = null; + unspentTransactions = null; balanceDecimal = null; balanceDecimalAlter = null; setIsBalanceEqual(false); - if (tokenSymbol.length() > 1) blockchainID = Blockchain.Token.getID(); // Reset blockchain to Token from ETH for token cards with zero token balance on it + if (tokenSymbol.length() > 1) + blockchainID = Blockchain.Token.getID(); // Reset blockchain to Token from ETH for token cards with zero token balance on it } public Date getPersonalizationDateTime() { @@ -658,11 +659,11 @@ public class TangemCard { } } - private List mUnspentTransactions = null; + private List unspentTransactions = null; public List getUnspentTransactions() { - if (mUnspentTransactions == null) mUnspentTransactions = new ArrayList<>(); - return mUnspentTransactions; + if (unspentTransactions == null) unspentTransactions = new ArrayList<>(); + return unspentTransactions; } public TangemCard(String UID) { @@ -726,9 +727,9 @@ public class TangemCard { balance = BigDecimal.valueOf(balanceConfirmed + balanceUnconfirmed); } else if (this.getBlockchain() == Blockchain.Ethereum || this.getBlockchain() == Blockchain.EthereumTestNet || this.getBlockchain() == Blockchain.Token) { if (balanceDecimal != null) { - balance = new BigDecimal(balanceDecimal); // Returns ETH / token balance + balance = new BigDecimal(balanceDecimal); // Returns ETH / token balance } else if (balanceDecimalAlter != null) { - balance = new BigDecimal(balanceDecimalAlter); // or ETH balance if there're no tokens on Token card + balance = new BigDecimal(balanceDecimalAlter); // or ETH balance if there're no tokens on Token card } } @@ -881,7 +882,7 @@ public class TangemCard { B.putString("PIN2", PIN2.name()); B.putString("Status", status.name()); B.putString("Blockchain", blockchainID); - B.putString("BlockchainName", blochchainName); + B.putString("BlockchainName", blockchainName); B.putInt("TokensDecimal", tokensDecimal); B.putString("TokenSymbol", tokenSymbol); B.putString("ContractAddress", contractAddress); @@ -929,10 +930,10 @@ public class TangemCard { B.putBoolean("NeedWriteIssuerData", getNeedWriteIssuerData()); } - if (mUnspentTransactions != null) { + if (unspentTransactions != null) { Bundle BB = new Bundle(); - for (Integer i = 0; i < mUnspentTransactions.size(); i++) { - BB.putBundle(i.toString(), mUnspentTransactions.get(i).getAsBundle()); + for (Integer i = 0; i < unspentTransactions.size(); i++) { + BB.putBundle(i.toString(), unspentTransactions.get(i).getAsBundle()); } B.putBundle("UnspentTransactions", BB); } @@ -994,7 +995,7 @@ public class TangemCard { tokenSymbol = B.getString("TokenSymbol", ""); contractAddress = B.getString("ContractAddress", ""); if (B.containsKey("BlockchainName")) - blochchainName = B.getString("BlockchainName", ""); + blockchainName = B.getString("BlockchainName", ""); validationNodeDescription = B.getString("validationNodeDescription"); if (B.containsKey("dtPersonalization")) { dtPersonalization = new Date(B.getLong("dtPersonalization")); @@ -1021,7 +1022,8 @@ public class TangemCard { if (B.containsKey("FailedBalance")) failedBalanceRequestCounter = new AtomicInteger(B.getInt("FailedBalance")); if (B.containsKey("Issuer")) issuer = Issuer.FindIssuer(B.getString("Issuer")); - if (B.containsKey("IssuerPublicDataKey")) issuerPublicDataKey = B.getByteArray("IssuerPublicDataKey"); + if (B.containsKey("IssuerPublicDataKey")) + issuerPublicDataKey = B.getByteArray("IssuerPublicDataKey"); if (B.containsKey("FirmwareVersion")) firmwareVersion = B.getString("FirmwareVersion"); if (B.containsKey("Batch")) batch = B.getString("Batch"); @@ -1059,13 +1061,13 @@ public class TangemCard { } if (B.containsKey("UnspentTransactions")) { - mUnspentTransactions = new ArrayList<>(); + unspentTransactions = new ArrayList<>(); Bundle BB = B.getBundle("UnspentTransactions"); Integer i = 0; while (BB.containsKey(i.toString())) { UnspentTransaction t = new UnspentTransaction(); t.LoadFromBundle(BB.getBundle(i.toString())); - mUnspentTransactions.add(t); + unspentTransactions.add(t); i++; } } From 840499c35a10e44bf34f98d7719751aef82e6975 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Oct 2018 16:12:05 +0300 Subject: [PATCH 6/9] Updated on 2026-08-14 --- .../main/java/com/tangem/presentation/fragment/LoadedWallet.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index 07d21291dc..a976e10cec 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -685,7 +685,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } override fun onReadStart(cardProtocol: CardProtocol) { - rlProgressBar.post { rlProgressBar.visibility = View.VISIBLE } + if (rlProgressBar != null) + rlProgressBar.post { rlProgressBar.visibility = View.VISIBLE } } override fun onReadProgress(protocol: CardProtocol, progress: Int) { From cee9c927ababf7531572dcce3bad12571285c503 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Oct 2018 16:30:22 +0300 Subject: [PATCH 7/9] Updated on 2026-08-14 --- app/src/main/AndroidManifest.xml | 8 +---- .../com/tangem/domain/wallet/TangemCard.java | 33 +++++++++---------- .../presentation/activity/MainActivity.kt | 8 +---- .../activity/SettingsDebugActivity.kt | 31 ----------------- .../presentation/fragment/LoadedWallet.kt | 15 +++++---- .../presentation/fragment/SettingsDebug.kt | 16 --------- .../res/layout/activity_settings_debug.xml | 24 -------------- app/src/main/res/xml/fr_settings_debug.xml | 14 -------- 8 files changed, 26 insertions(+), 123 deletions(-) delete mode 100644 app/src/main/java/com/tangem/presentation/activity/SettingsDebugActivity.kt delete mode 100644 app/src/main/java/com/tangem/presentation/fragment/SettingsDebug.kt delete mode 100644 app/src/main/res/layout/activity_settings_debug.xml delete mode 100644 app/src/main/res/xml/fr_settings_debug.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5e29909f23..330db2e0da 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,7 +10,7 @@ - + @@ -129,11 +129,6 @@ android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" /> - - - \ No newline at end of file diff --git a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java index 9c8cda200e..8f257a3464 100644 --- a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java +++ b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java @@ -433,7 +433,7 @@ public class TangemCard { return failedBalanceRequestCounter.get(); } - Boolean balanceEqual; + private Boolean balanceEqual; public Boolean isBalanceEqual() { return balanceEqual; @@ -451,22 +451,22 @@ public class TangemCard { public Boolean isReusable() { if (settingsMask == null) return null; - return (settingsMask.intValue() & SettingsMask.IsReusable) != 0; + return (settingsMask & SettingsMask.IsReusable) != 0; } public Boolean allowSwapPIN() { if (settingsMask == null) return null; - return (settingsMask.intValue() & SettingsMask.AllowSwapPIN) != 0; + return (settingsMask & SettingsMask.AllowSwapPIN) != 0; } public Boolean allowSwapPIN2() { if (settingsMask == null) return null; - return (settingsMask.intValue() & SettingsMask.AllowSwapPIN2) != 0; + return (settingsMask & SettingsMask.AllowSwapPIN2) != 0; } public Boolean needCVC() { if (settingsMask == null) return null; - return (settingsMask.intValue() & SettingsMask.UseCVC) != 0; + return (settingsMask & SettingsMask.UseCVC) != 0; } public Boolean useDefaultPIN1() { @@ -475,7 +475,7 @@ public class TangemCard { public Boolean useSmartSecurityDelay() { if (settingsMask == null) return null; - return (settingsMask.intValue() & SettingsMask.SmartSecurityDelay) != 0; + return (settingsMask & SettingsMask.SmartSecurityDelay) != 0; } public enum PIN2_Mode {Unchecked, DefaultPIN2, CustomPIN2} @@ -501,22 +501,22 @@ public class TangemCard { public Boolean supportNDEF() { if (settingsMask == null) return null; - return (settingsMask.intValue() & SettingsMask.UseNDEF) != 0; + return (settingsMask & SettingsMask.UseNDEF) != 0; } public Boolean supportOnlyOneCommandAtTime() { if (settingsMask == null) return null; - return supportNDEF() && ((settingsMask.intValue() & SettingsMask.UseOneCommandAtTime) != 0); + return supportNDEF() && ((settingsMask & SettingsMask.UseOneCommandAtTime) != 0); } public Boolean supportDynamicNDEF() { if (settingsMask == null) return null; - return supportNDEF() && ((settingsMask.intValue() & SettingsMask.UseDynamicNDEF) != 0); + return supportNDEF() && ((settingsMask & SettingsMask.UseDynamicNDEF) != 0); } public Boolean supportBlock() { if (settingsMask == null) return null; - return (settingsMask.intValue() & SettingsMask.UseBlock) != 0; + return (settingsMask & SettingsMask.UseBlock) != 0; } public int getMaxSignatures() { @@ -541,7 +541,7 @@ public class TangemCard { return getFirmwareVersion().endsWith("d") || getFirmwareVersion().endsWith("SDK"); } - public static String getFirmwareVersionNumber(String version) throws Exception { + private static String getFirmwareVersionNumber(String version) throws Exception { if (version == null || version.length() < 4) { throw new Exception("Firmware version has unsupported format!"); } @@ -554,7 +554,7 @@ public class TangemCard { } } - public static int[] getFirmwareVersionNumbers(String version) throws Exception { + private static int[] getFirmwareVersionNumbers(String version) throws Exception { String fwNumber = getFirmwareVersionNumber(version); String[] strNumbers = fwNumber.split("\\."); @@ -650,12 +650,11 @@ public class TangemCard { return B; } - public void LoadFromBundle(Bundle B) { + public void loadFromBundle(Bundle B) { txID = B.getString("txID"); Amount = B.getInt("Amount"); Height = B.getInt("Height"); Raw = B.getString("Raw"); - } } @@ -871,11 +870,11 @@ public class TangemCard { public Bundle getAsBundle() { Bundle B = new Bundle(); - SaveToBundle(B); + saveToBundle(B); return B; } - public void SaveToBundle(Bundle B) { + public void saveToBundle(Bundle B) { B.putString("UID", UID); B.putByteArray("CID", CID); B.putString("PIN", PIN); @@ -1066,7 +1065,7 @@ public class TangemCard { Integer i = 0; while (BB.containsKey(i.toString())) { UnspentTransaction t = new UnspentTransaction(); - t.LoadFromBundle(BB.getBundle(i.toString())); + t.loadFromBundle(BB.getBundle(i.toString())); unspentTransactions.add(t); i++; } diff --git a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt index 757f10f7f7..b249e75d1a 100644 --- a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt @@ -147,12 +147,6 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco // set listeners fab.setOnClickListener { showMenu(it) } -// if (BuildConfig.DEBUG) { -// fab.setOnLongClickListener { -// startActivity(Intent(this, SettingsDebugActivity::class.java)) -// false -// } -// } val apiHelper = ServerApiHelper() apiHelper.setLastVersionListener { response -> @@ -315,7 +309,7 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco val cardInfo = Bundle() cardInfo.putString("UID", cardProtocol.card.uid) val bCard = Bundle() - cardProtocol.card.SaveToBundle(bCard) + cardProtocol.card.saveToBundle(bCard) cardInfo.putBundle("Card", bCard) val uid = cardInfo.getString("UID") diff --git a/app/src/main/java/com/tangem/presentation/activity/SettingsDebugActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SettingsDebugActivity.kt deleted file mode 100644 index 56acc42878..0000000000 --- a/app/src/main/java/com/tangem/presentation/activity/SettingsDebugActivity.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.tangem.presentation.activity - -import android.os.Bundle -import android.support.v7.app.AppCompatActivity -import android.support.v7.widget.Toolbar - -import com.tangem.wallet.R - -class SettingsDebugActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_settings_debug) - - initToolbar() - } - - private fun initToolbar() { - val toolbar = findViewById(R.id.toolbar)!! - toolbar.title = getString(R.string.debug_settings) - setSupportActionBar(toolbar) - toolbar.setNavigationIcon(R.drawable.ic_arrow_left_white_24dp) - toolbar.setNavigationOnClickListener { - if (fragmentManager.backStackEntryCount == 0) - finish() - else - fragmentManager.popBackStack() - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index a976e10cec..cb082cecda 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -698,15 +698,16 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific if (cardProtocol != null) { if (cardProtocol.error == null) { - rlProgressBar.post { - rlProgressBar.visibility = View.GONE + + rlProgressBar?.post { + rlProgressBar?.visibility = View.GONE this.cardProtocol = cardProtocol if (!cardProtocol.card.isWalletPublicKeyValid) refresh() else updateViews() } } else { // remove last UIDs because of error and no card read - rlProgressBar.post { + rlProgressBar?.post { lastReadSuccess = false if (cardProtocol.error is CardProtocol.TangemException_ExtendedLengthNotSupported) if (!NoExtendedLengthSupportDialog.allReadyShowed) @@ -717,9 +718,9 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } } - rlProgressBar.postDelayed({ + rlProgressBar?.postDelayed({ try { - rlProgressBar.visibility = View.GONE + rlProgressBar?.visibility = View.GONE } catch (e: Exception) { e.printStackTrace() } @@ -728,9 +729,9 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific override fun onReadCancel() { verifyCardTask = null - rlProgressBar.postDelayed({ + rlProgressBar?.postDelayed({ try { - rlProgressBar.visibility = View.GONE + rlProgressBar?.visibility = View.GONE } catch (e: Exception) { e.printStackTrace() } diff --git a/app/src/main/java/com/tangem/presentation/fragment/SettingsDebug.kt b/app/src/main/java/com/tangem/presentation/fragment/SettingsDebug.kt deleted file mode 100644 index f9776064d5..0000000000 --- a/app/src/main/java/com/tangem/presentation/fragment/SettingsDebug.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.tangem.presentation.fragment - -import android.os.Bundle -import android.preference.PreferenceFragment -import android.preference.SwitchPreference -import com.tangem.wallet.R - -class SettingsDebug : PreferenceFragment() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - addPreferencesFromResource(R.xml.fr_settings_debug) - - } - -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings_debug.xml b/app/src/main/res/layout/activity_settings_debug.xml deleted file mode 100644 index f33e45cc9a..0000000000 --- a/app/src/main/res/layout/activity_settings_debug.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/fr_settings_debug.xml b/app/src/main/res/xml/fr_settings_debug.xml deleted file mode 100644 index 783dffc8eb..0000000000 --- a/app/src/main/res/xml/fr_settings_debug.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - \ No newline at end of file From 944aab9f23e6794a025da0432b102d127c5b5f52 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Oct 2018 17:39:16 +0300 Subject: [PATCH 8/9] Updated on 2026-08-14 --- .../com/tangem/data/nfc/SignPaymentTask.java | 4 ++-- .../activity/CreateNewWalletActivity.kt | 4 ++-- .../activity/EmptyWalletActivity.kt | 4 ++-- .../activity/PinRequestActivity.kt | 8 +++---- .../presentation/activity/PinSwapActivity.kt | 4 ++-- ...pareCryptonitOtherAPIWithdrawalActivity.kt | 4 ++-- .../PrepareCryptonitWithdrawalActivity.kt | 21 +++++++++---------- .../PrepareKrakenWithdrawalActivity.kt | 4 ++-- .../activity/PreparePaymentActivity.kt | 4 ++-- .../presentation/activity/PurgeActivity.kt | 4 ++-- .../activity/SendTransactionActivity.kt | 6 ++---- .../activity/SignPaymentActivity.kt | 4 ++-- .../presentation/fragment/LoadedWallet.kt | 16 ++++++-------- 13 files changed, 40 insertions(+), 47 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 450848dc73..b6e0e78c65 100644 --- a/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java +++ b/app/src/main/java/com/tangem/data/nfc/SignPaymentTask.java @@ -105,8 +105,8 @@ public class SignPaymentTask extends Thread { } Intent intent = new Intent(mContext, SendTransactionActivity.class); - intent.putExtra(SendTransactionActivity.EXTRA_UID, mCard.getUID()); - intent.putExtra(SendTransactionActivity.EXTRA_CARD, mCard.getAsBundle()); + intent.putExtra(TangemCard.EXTRA_UID, mCard.getUID()); + intent.putExtra(TangemCard.EXTRA_CARD, mCard.getAsBundle()); intent.putExtra(SendTransactionActivity.EXTRA_TX, txStr); mContext.startActivityForResult(intent, SignPaymentActivity.REQUEST_CODE_SEND_PAYMENT); } diff --git a/app/src/main/java/com/tangem/presentation/activity/CreateNewWalletActivity.kt b/app/src/main/java/com/tangem/presentation/activity/CreateNewWalletActivity.kt index cfbb6c0f0d..38bb69401e 100644 --- a/app/src/main/java/com/tangem/presentation/activity/CreateNewWalletActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/CreateNewWalletActivity.kt @@ -46,8 +46,8 @@ class CreateNewWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, nfcManager = NfcManager(this, this) - card = TangemCard(intent.getStringExtra("UID")) - card!!.loadFromBundle(intent.extras!!.getBundle("Card")) + card = TangemCard(intent.getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) tvCardId.text = card!!.cidDescription diff --git a/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt b/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt index 30a60e3efb..bca8c032db 100644 --- a/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt @@ -45,8 +45,8 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card nfcManager = NfcManager(this, this) - card = TangemCard(intent.getStringExtra("UID")) - card!!.loadFromBundle(intent.extras!!.getBundle("Card")) + card = TangemCard(intent.getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) tvIssuer.text = card!!.issuerDescription tvBlockchain.text = card!!.blockchainName diff --git a/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt index cb3a5378b3..e28f447200 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt @@ -82,11 +82,11 @@ class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge else if (mode == Mode.ConfirmNewPIN2) tvPinPrompt.setText(R.string.confirm_new_pin_2) else if (mode == Mode.RequestPIN2) { - val uid = intent.getStringExtra("UID") - val mCard = TangemCard(uid) - mCard.loadFromBundle(intent.getBundleExtra("Card")) + val uid = intent.getStringExtra(TangemCard.EXTRA_UID) + val card = TangemCard(uid) + card.loadFromBundle(intent.getBundleExtra(TangemCard.EXTRA_CARD)) - if (mCard.PIN2 == TangemCard.PIN2_Mode.DefaultPIN2 || mCard.PIN2 == TangemCard.PIN2_Mode.Unchecked) { + if (card.PIN2 == TangemCard.PIN2_Mode.DefaultPIN2 || card.PIN2 == TangemCard.PIN2_Mode.Unchecked) { // if we know PIN2 or not try default previously - use it PINStorage.setPIN2(PINStorage.getDefaultPIN2()) setResult(Activity.RESULT_OK) diff --git a/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt index 3a55b7ab23..75fe313ffa 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt @@ -48,8 +48,8 @@ class PinSwapActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProt nfcManager = NfcManager(this, this) - card = TangemCard(intent.getStringExtra("UID")) - card!!.loadFromBundle(intent.extras!!.getBundle("Card")) + card = TangemCard(intent.getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) newPIN = intent.getStringExtra("newPIN") newPIN2 = intent.getStringExtra("newPIN2") 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 ab2da7fb02..da2d6b7aaf 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherAPIWithdrawalActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitOtherAPIWithdrawalActivity.kt @@ -44,8 +44,8 @@ class PrepareCryptonitOtherAPIWithdrawalActivity : AppCompatActivity(), NfcAdapt nfcManager = NfcManager(this, this) - card = TangemCard(intent.getStringExtra("UID")) - card!!.loadFromBundle(intent.extras!!.getBundle("Card")) + card = TangemCard(intent.getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) cryptonit = Cryptonit_OtherAPI(this) diff --git a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt index b528572ec7..def2b6ba31 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PrepareCryptonitWithdrawalActivity.kt @@ -43,8 +43,8 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade nfcManager = NfcManager(this, this) - card = TangemCard(intent.getStringExtra("UID")) - card!!.loadFromBundle(intent.extras!!.getBundle("Card")) + card = TangemCard(intent.getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) cryptonit = Cryptonit(this) @@ -70,12 +70,12 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade tvFeeCurrency.text = tvCurrency.text etAmount.setText(engine.convertByteArrayToAmount(card!!, card!!.denomination)) - etAmount.setOnEditorActionListener{lv,actionId,event-> + etAmount.setOnEditorActionListener { lv, actionId, event -> if (actionId == EditorInfo.IME_ACTION_DONE) { val imm = lv.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(lv.windowToken, 0) true - }else { + } else { false } } @@ -104,7 +104,7 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade val strFee: String = etFee.text.toString().replace(",", ".") var dblAmount: Double = strAmount.toDouble() var dblFee: Double = strFee.toDouble() - cryptonit!!.fee=strFee + cryptonit!!.fee = strFee rlProgressBar.visibility = View.VISIBLE tvProgressDescription.text = getString(R.string.cryptonit_request_withdrawal) @@ -116,8 +116,8 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade } ivRefreshBalance.setOnClickListener { - cryptonit!!.username=etUsername.text.toString() - cryptonit!!.password=etPassword.text.toString() + cryptonit!!.username = etUsername.text.toString() + cryptonit!!.password = etPassword.text.toString() cryptonit!!.saveAccountInfo() doRequestBalance() } @@ -137,11 +137,10 @@ class PrepareCryptonitWithdrawalActivity : AppCompatActivity(), NfcAdapter.Reade } cryptonit!!.setWithdrawalListener { response -> rlProgressBar.visibility = View.INVISIBLE - if (response.success != null && response.success!!){ - Toast.makeText(this,"Withdrawal successful!", Toast.LENGTH_LONG).show(); + if (response.success != null && response.success!!) { + Toast.makeText(this, "Withdrawal successful!", Toast.LENGTH_LONG).show(); finish() - } - else { + } else { tvError.visibility = View.VISIBLE tvError.text = response.errors.toString() } 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 60f1d61802..3928c1196a 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PrepareKrakenWithdrawalActivity.kt @@ -51,8 +51,8 @@ class PrepareKrakenWithdrawalActivity : AppCompatActivity(), NfcAdapter.ReaderCa nfcManager = NfcManager(this, this) - card = TangemCard(intent.getStringExtra("UID")) - card!!.loadFromBundle(intent.extras!!.getBundle("Card")) + card = TangemCard(intent.getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) kraken = Kraken(this) 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 84ad453cfb..2a2603331e 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt @@ -45,8 +45,8 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { nfcManager = NfcManager(this, this) - card = TangemCard(intent.getStringExtra("UID")) - card!!.loadFromBundle(intent.extras!!.getBundle("Card")) + card = TangemCard(intent.getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) tvCardID.text = card!!.cidDescription val engine = CoinEngineFactory.create(card!!.blockchain) diff --git a/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt index 06b8931f26..841c1e6959 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PurgeActivity.kt @@ -43,8 +43,8 @@ class PurgeActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoc MainActivity.commonInit(applicationContext) - card = TangemCard(intent.getStringExtra("UID")) - card!!.loadFromBundle(intent.extras!!.getBundle("Card")) + card = TangemCard(intent.getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) tvCardID.text = card!!.cidDescription progressBar.progressTintList = ColorStateList.valueOf(Color.DKGRAY) diff --git a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt index 6c1b672c82..2775a0d814 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt @@ -24,8 +24,6 @@ import java.math.BigInteger class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { companion object { - const val EXTRA_UID: String = "UID" - const val EXTRA_CARD: String = "Card" const val EXTRA_TX: String = "TX" } @@ -45,8 +43,8 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { nfcManager = NfcManager(this, this) val intent = intent - card = TangemCard(getIntent().getStringExtra(EXTRA_UID)) - card!!.loadFromBundle(intent.extras!!.getBundle(EXTRA_CARD)) + card = TangemCard(getIntent().getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) tx = intent.getStringExtra(EXTRA_TX) val engine = CoinEngineFactory.create(card!!.blockchain) 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 ea8a9367c6..b427df1901 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SignPaymentActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/SignPaymentActivity.kt @@ -54,8 +54,8 @@ class SignPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card nfcManager = NfcManager(this, this) - card = TangemCard(intent.getStringExtra("UID")) - card!!.loadFromBundle(intent.extras!!.getBundle("Card")) + card = TangemCard(intent.getStringExtra(TangemCard.EXTRA_UID)) + card!!.loadFromBundle(intent.extras!!.getBundle(TangemCard.EXTRA_CARD)) amountStr = intent.getStringExtra(EXTRA_AMOUNT) feeStr = intent.getStringExtra("Fee") diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index cb082cecda..04acbf43da 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -10,20 +10,21 @@ import android.nfc.NfcAdapter import android.nfc.Tag import android.nfc.tech.IsoDep import android.os.Bundle -import android.preference.PreferenceManager import android.support.v4.app.Fragment import android.support.v4.content.ContextCompat -import android.support.v7.view.ContextThemeWrapper import android.text.Html import android.util.Log -import android.view.* +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.Toast import com.google.zxing.WriterException +import com.tangem.data.network.ElectrumRequest import com.tangem.data.network.ServerApiHelper import com.tangem.data.network.ServerApiHelperElectrum -import com.tangem.data.network.model.InfuraResponse -import com.tangem.data.network.ElectrumRequest import com.tangem.data.network.model.CardVerifyAndGetInfo +import com.tangem.data.network.model.InfuraResponse import com.tangem.data.nfc.VerifyCardTask import com.tangem.domain.cardReader.CardProtocol import com.tangem.domain.cardReader.NfcManager @@ -35,7 +36,6 @@ import com.tangem.presentation.dialog.ShowQRCodeDialog import com.tangem.presentation.dialog.WaitSecurityDelayDialog import com.tangem.util.Util import com.tangem.util.UtilHelper -import com.tangem.wallet.BuildConfig import com.tangem.wallet.R import kotlinx.android.synthetic.main.fr_loaded_wallet.* import org.json.JSONException @@ -72,7 +72,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific private var newPIN = "" private var newPIN2 = "" private var cardProtocol: CardProtocol? = null - private var sp: SharedPreferences? = null private val inactiveColor: ColorStateList by lazy { resources.getColorStateList(R.color.btn_dark) } private val activeColor: ColorStateList by lazy { resources.getColorStateList(R.color.colorAccent) } private var requestCounter = 0 @@ -81,11 +80,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - nfcManager = NfcManager(activity, this) - sp = PreferenceManager.getDefaultSharedPreferences(activity) - card = TangemCard(activity!!.intent.getStringExtra(TangemCard.EXTRA_UID)) card!!.loadFromBundle(activity!!.intent.extras.getBundle(TangemCard.EXTRA_CARD)) From 3d03c1e593d6a4f4fff3c2e6b4e62ba3ffae2dc1 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Oct 2018 17:57:08 +0300 Subject: [PATCH 9/9] Updated on 2026-08-14 --- app/build.gradle | 2 +- .../presentation/fragment/LoadedWallet.kt | 101 ++++++++---------- 2 files changed, 48 insertions(+), 55 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d333a0b7ed..aa0db4ed93 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { applicationId "com.tangem.wallet" minSdkVersion 21 targetSdkVersion 27 - versionCode 90 + versionCode 91 versionName "0.89.2." + generateVersionName() testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index 04acbf43da..a7960ae55a 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -2,6 +2,7 @@ package com.tangem.presentation.fragment import android.app.Activity import android.app.AlertDialog +import android.app.Fragment import android.content.* import android.content.Context.CLIPBOARD_SERVICE import android.content.pm.PackageManager @@ -10,7 +11,6 @@ import android.nfc.NfcAdapter import android.nfc.Tag import android.nfc.tech.IsoDep import android.os.Bundle -import android.support.v4.app.Fragment import android.support.v4.content.ContextCompat import android.text.Html import android.util.Log @@ -87,7 +87,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific lastTag = activity!!.intent.getParcelableExtra(MainActivity.EXTRA_LAST_DISCOVERED_TAG) - localStorage = LocalStorage(context!!) + localStorage = LocalStorage(activity) } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -160,13 +160,13 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific // startActivityForResult(intent, REQUEST_CODE_RECEIVE_PAYMENT) // } getString(R.string.via_cryptonit) -> { - val intent = Intent(context, PrepareCryptonitWithdrawalActivity::class.java) + val intent = Intent(activity, PrepareCryptonitWithdrawalActivity::class.java) intent.putExtra("UID", card!!.uid) intent.putExtra("Card", card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_RECEIVE_PAYMENT) } getString(R.string.via_kraken) -> { - val intent = Intent(context, PrepareKrakenWithdrawalActivity::class.java) + val intent = Intent(activity, PrepareKrakenWithdrawalActivity::class.java) intent.putExtra("UID", card!!.uid) intent.putExtra("Card", card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_RECEIVE_PAYMENT) @@ -196,7 +196,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific showSingleToast(R.string.need_attach_card_again) } btnScanAgain.setOnClickListener { - val intent = Intent(context, MainActivity::class.java) + val intent = Intent(activity, MainActivity::class.java) startActivity(intent) } btnExtract.setOnClickListener { @@ -214,7 +214,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific else if (card!!.remainingSignatures == 0) showSingleToast(R.string.card_has_no_remaining_signature) else { - val intent = Intent(context, PreparePaymentActivity::class.java) + val intent = Intent(activity, PreparePaymentActivity::class.java) intent.putExtra("UID", card!!.uid) intent.putExtra("Card", card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_SEND_PAYMENT) @@ -527,14 +527,14 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific REQUEST_CODE_ENTER_NEW_PIN -> if (resultCode == Activity.RESULT_OK) { if (data != null) { if (data.extras != null && data.extras!!.containsKey("confirmPIN")) { - val intent = Intent(context, PinRequestActivity::class.java) + val intent = Intent(activity, PinRequestActivity::class.java) intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) - intent.putExtra("UID", card!!.uid) - intent.putExtra("Card", card!!.asBundle) + intent.putExtra(TangemCard.EXTRA_UID, card!!.uid) + intent.putExtra(TangemCard.EXTRA_CARD, card!!.asBundle) newPIN = data.getStringExtra("newPIN") startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) } else { - val intent = Intent(context, PinRequestActivity::class.java) + val intent = Intent(activity, PinRequestActivity::class.java) intent.putExtra("newPIN", data.getStringExtra("newPIN")) intent.putExtra("mode", PinRequestActivity.Mode.ConfirmNewPIN.toString()) startActivityForResult(intent, REQUEST_CODE_ENTER_NEW_PIN) @@ -544,14 +544,14 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific REQUEST_CODE_ENTER_NEW_PIN2 -> if (resultCode == Activity.RESULT_OK) { if (data != null) { if (data.extras != null && data.extras!!.containsKey("confirmPIN2")) { - val intent = Intent(context, PinRequestActivity::class.java) + val intent = Intent(activity, PinRequestActivity::class.java) intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) - intent.putExtra("UID", card!!.uid) - intent.putExtra("Card", card!!.asBundle) + intent.putExtra(TangemCard.EXTRA_UID, card!!.uid) + intent.putExtra(TangemCard.EXTRA_CARD, card!!.asBundle) newPIN2 = data.getStringExtra("newPIN2") startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) } else { - val intent = Intent(context, PinRequestActivity::class.java) + val intent = Intent(activity, PinRequestActivity::class.java) intent.putExtra("newPIN2", data.getStringExtra("newPIN2")) intent.putExtra("mode", PinRequestActivity.Mode.ConfirmNewPIN2.toString()) startActivityForResult(intent, REQUEST_CODE_ENTER_NEW_PIN2) @@ -579,8 +579,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific REQUEST_CODE_SWAP_PIN -> if (resultCode == Activity.RESULT_OK) { if (data == null) { data = Intent() - data.putExtra("UID", card!!.uid) - data.putExtra("Card", card!!.asBundle) + data.putExtra(TangemCard.EXTRA_UID, card!!.uid) + data.putExtra(TangemCard.EXTRA_CARD, card!!.asBundle) data.putExtra("modification", "delete") } else data.putExtra("modification", "update") @@ -590,17 +590,17 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific activity!!.finish() } } else { - if (data != null && data.extras != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) { - val updatedCard = TangemCard(data.getStringExtra("UID")) - updatedCard.loadFromBundle(data.getBundleExtra("Card")) + if (data != null && data.extras != null && data.extras!!.containsKey(TangemCard.EXTRA_UID) && data.extras!!.containsKey(TangemCard.EXTRA_CARD)) { + val updatedCard = TangemCard(data.getStringExtra(TangemCard.EXTRA_UID)) + updatedCard.loadFromBundle(data.getBundleExtra(TangemCard.EXTRA_CARD)) card = updatedCard } if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { requestPIN2Count++ - val intent = Intent(context, PinRequestActivity::class.java) + val intent = Intent(activity, PinRequestActivity::class.java) intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", card!!.uid) - intent.putExtra("Card", card!!.asBundle) + intent.putExtra(TangemCard.EXTRA_CARD, card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) return } else { @@ -610,16 +610,16 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } } REQUEST_CODE_REQUEST_PIN2_FOR_PURGE -> if (resultCode == Activity.RESULT_OK) { - val intent = Intent(context, PurgeActivity::class.java) - intent.putExtra("UID", card!!.uid) - intent.putExtra("Card", card!!.asBundle) + val intent = Intent(activity, PurgeActivity::class.java) + intent.putExtra(TangemCard.EXTRA_UID, card!!.uid) + intent.putExtra(TangemCard.EXTRA_CARD, card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_PURGE) } REQUEST_CODE_PURGE -> if (resultCode == Activity.RESULT_OK) { if (data == null) { data = Intent() - data.putExtra("UID", card!!.uid) - data.putExtra("Card", card!!.asBundle) + data.putExtra(TangemCard.EXTRA_UID, card!!.uid) + data.putExtra(TangemCard.EXTRA_CARD, card!!.asBundle) data.putExtra("modification", "delete") } else { data.putExtra("modification", "update") @@ -629,17 +629,17 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific activity!!.finish() } } else { - if (data != null && data.extras != null && data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) { - val updatedCard = TangemCard(data.getStringExtra("UID")) - updatedCard.loadFromBundle(data.getBundleExtra("Card")) + if (data != null && data.extras != null && data.extras!!.containsKey(TangemCard.EXTRA_UID) && data.extras!!.containsKey(TangemCard.EXTRA_CARD)) { + val updatedCard = TangemCard(data.getStringExtra(TangemCard.EXTRA_UID)) + updatedCard.loadFromBundle(data.getBundleExtra(TangemCard.EXTRA_CARD)) card = updatedCard } if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { requestPIN2Count++ - val intent = Intent(context, PinRequestActivity::class.java) + val intent = Intent(activity, PinRequestActivity::class.java) intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) - intent.putExtra("UID", card!!.uid) - intent.putExtra("Card", card!!.asBundle) + intent.putExtra(TangemCard.EXTRA_UID, card!!.uid) + intent.putExtra(TangemCard.EXTRA_CARD, card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_PURGE) return } else { @@ -658,9 +658,9 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } if (data != null && data.extras != null) { - if (data.extras!!.containsKey("UID") && data.extras!!.containsKey("Card")) { - val updatedCard = TangemCard(data.getStringExtra("UID")) - updatedCard.loadFromBundle(data.getBundleExtra("Card")) + if (data.extras!!.containsKey(TangemCard.EXTRA_UID) && data.extras!!.containsKey(TangemCard.EXTRA_CARD)) { + val updatedCard = TangemCard(data.getStringExtra(TangemCard.EXTRA_UID)) + updatedCard.loadFromBundle(data.getBundleExtra(TangemCard.EXTRA_CARD)) card = updatedCard } if (data.extras!!.containsKey("message")) { @@ -709,7 +709,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific if (!NoExtendedLengthSupportDialog.allReadyShowed) NoExtendedLengthSupportDialog().show(activity!!.fragmentManager, NoExtendedLengthSupportDialog.TAG) else - Toast.makeText(context, R.string.try_to_scan_again, Toast.LENGTH_SHORT).show() + Toast.makeText(activity, R.string.try_to_scan_again, Toast.LENGTH_SHORT).show() } } } @@ -782,7 +782,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } else { val validator = BalanceValidator() validator.Check(card, false) - tvBalanceLine1.setTextColor(ContextCompat.getColor(context!!, validator.color)) + tvBalanceLine1.setTextColor(ContextCompat.getColor(activity, validator.color)) tvBalanceLine1.text = validator.firstLine tvBalanceLine2.text = validator.getSecondLine(false) } @@ -918,17 +918,10 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } } -// private fun prepareResultIntent(): Intent { -// val data = Intent() -// data.putExtra("UID", card!!.uid) -// data.putExtra("Card", card!!.asBundle) -// return data -// } - private fun openVerifyCard(cardProtocol: CardProtocol) { - val intent = Intent(context, VerifyCardActivity::class.java) - intent.putExtra("UID", cardProtocol.card.uid) - intent.putExtra("Card", cardProtocol.card.asBundle) + val intent = Intent(activity, VerifyCardActivity::class.java) + intent.putExtra(TangemCard.EXTRA_UID, cardProtocol.card.uid) + intent.putExtra(TangemCard.EXTRA_CARD, cardProtocol.card.asBundle) startActivityForResult(intent, REQUEST_CODE_VERIFY_CARD) } @@ -952,7 +945,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific isoDep.timeout = 65000 } - verifyCardTask = VerifyCardTask(context, card, nfcManager, isoDep, this) + verifyCardTask = VerifyCardTask(activity, card, nfcManager, isoDep, this) verifyCardTask!!.start() } catch (e: Exception) { @@ -983,20 +976,20 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } else { val clipboard = activity!!.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager clipboard.primaryClip = ClipData.newPlainText(txtShare, txtShare) - Toast.makeText(context, R.string.copied_clipboard, Toast.LENGTH_LONG).show() + Toast.makeText(activity, R.string.copied_clipboard, Toast.LENGTH_LONG).show() } } else { val txtShare = card!!.wallet val clipboard = activity!!.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager clipboard.primaryClip = ClipData.newPlainText(txtShare, txtShare) - Toast.makeText(context, R.string.copied_clipboard, Toast.LENGTH_LONG).show() + Toast.makeText(activity, R.string.copied_clipboard, Toast.LENGTH_LONG).show() } } private fun startSwapPINActivity() { - val intent = Intent(context, PinSwapActivity::class.java) - intent.putExtra("UID", card!!.uid) - intent.putExtra("Card", card!!.asBundle) + val intent = Intent(activity, PinSwapActivity::class.java) + intent.putExtra(TangemCard.EXTRA_UID, card!!.uid) + intent.putExtra(TangemCard.EXTRA_CARD, card!!.asBundle) intent.putExtra("newPIN", newPIN) intent.putExtra("newPIN2", newPIN2) startActivityForResult(intent, REQUEST_CODE_SWAP_PIN) @@ -1008,7 +1001,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific if (singleToast == null || !singleToast!!.view.isShown || showTime.time + 2000 < Date().time) { if (singleToast != null) singleToast!!.cancel() - singleToast = Toast.makeText(context, text, Toast.LENGTH_LONG) + singleToast = Toast.makeText(activity, text, Toast.LENGTH_LONG) singleToast!!.show() showTime = Date() }