From 33854d62c0dd58b369f14be55bba5f0b6d889e2f Mon Sep 17 00:00:00 2001 From: Tangem Date: Sun, 31 Mar 2019 23:35:21 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/src/main/AndroidManifest.xml | 2 +- .../java/com/tangem/data/LogFileProvider.java | 2 +- app/src/main/java/com/tangem/di/Navigator.kt | 1 + .../java/com/tangem/di/NavigatorComponent.kt | 2 +- .../tangemAccess/java/com/tangem/Test2.java | 4 + .../tangem/ui}/PrepareTransactionActivity.kt | 5 +- .../layout/activity_prepare_transaction.xml | 2 +- .../tangemCardano/java/com/tangem/Test1.java | 4 + .../tangem/ui/PrepareTransactionActivity.kt | 180 ++++++++++++ .../layout/activity_prepare_transaction.xml | 262 ++++++++++++++++++ 10 files changed, 458 insertions(+), 6 deletions(-) create mode 100644 app/src/tangemAccess/java/com/tangem/Test2.java rename app/src/{main/java/com/tangem/ui/activity => tangemAccess/java/com/tangem/ui}/PrepareTransactionActivity.kt (97%) rename app/src/{main => tangemAccess}/res/layout/activity_prepare_transaction.xml (99%) create mode 100644 app/src/tangemCardano/java/com/tangem/Test1.java create mode 100644 app/src/tangemCardano/java/com/tangem/ui/PrepareTransactionActivity.kt create mode 100644 app/src/tangemCardano/res/layout/activity_prepare_transaction.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fbc7175cf5..2cc8950e80 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -99,7 +99,7 @@ android:theme="@style/AppTheme.NoActionBar" /> diff --git a/app/src/main/java/com/tangem/data/LogFileProvider.java b/app/src/main/java/com/tangem/data/LogFileProvider.java index b3c3f18457..268d3f4884 100644 --- a/app/src/main/java/com/tangem/data/LogFileProvider.java +++ b/app/src/main/java/com/tangem/data/LogFileProvider.java @@ -61,7 +61,7 @@ public class LogFileProvider extends ContentProvider { // The desired file name is specified by the last segment of the // path // E.g. - // 'content://it.my.app.LogFileProvider/Test.txt' + // 'content://it.my.app.LogFileProvider/Test1.txt' // Take this and build the path to the file String fileLocation = getContext().getCacheDir() + File.separator + uri.getLastPathSegment(); diff --git a/app/src/main/java/com/tangem/di/Navigator.kt b/app/src/main/java/com/tangem/di/Navigator.kt index 07ba69f100..d9c9c4ed6b 100644 --- a/app/src/main/java/com/tangem/di/Navigator.kt +++ b/app/src/main/java/com/tangem/di/Navigator.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.nfc.Tag import com.tangem.Constant import com.tangem.domain.wallet.TangemContext +import com.tangem.ui.PrepareTransactionActivity import com.tangem.ui.activity.* class Navigator { diff --git a/app/src/main/java/com/tangem/di/NavigatorComponent.kt b/app/src/main/java/com/tangem/di/NavigatorComponent.kt index f3cef57221..25990b46a1 100644 --- a/app/src/main/java/com/tangem/di/NavigatorComponent.kt +++ b/app/src/main/java/com/tangem/di/NavigatorComponent.kt @@ -6,7 +6,7 @@ import com.tangem.ui.activity.LogoActivity import com.tangem.ui.activity.MainActivity import com.tangem.ui.activity.PrepareCryptonitOtherApiWithdrawalActivity import com.tangem.ui.activity.PrepareKrakenWithdrawalActivity -import com.tangem.ui.activity.PrepareTransactionActivity +import com.tangem.ui.PrepareTransactionActivity import com.tangem.ui.activity.PurgeActivity import com.tangem.ui.activity.VerifyCardActivity diff --git a/app/src/tangemAccess/java/com/tangem/Test2.java b/app/src/tangemAccess/java/com/tangem/Test2.java new file mode 100644 index 0000000000..c4c336af47 --- /dev/null +++ b/app/src/tangemAccess/java/com/tangem/Test2.java @@ -0,0 +1,4 @@ +package com.tangem; + +public class Test2 { +} diff --git a/app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt b/app/src/tangemAccess/java/com/tangem/ui/PrepareTransactionActivity.kt similarity index 97% rename from app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt rename to app/src/tangemAccess/java/com/tangem/ui/PrepareTransactionActivity.kt index 9789a22815..e18c1d92c1 100644 --- a/app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt +++ b/app/src/tangemAccess/java/com/tangem/ui/PrepareTransactionActivity.kt @@ -1,4 +1,4 @@ -package com.tangem.ui.activity +package com.tangem.ui import android.app.Activity import android.content.Context @@ -21,9 +21,10 @@ import com.tangem.domain.wallet.CoinEngineFactory import com.tangem.domain.wallet.TangemContext import com.tangem.card_android.android.nfc.NfcLifecycleObserver import com.tangem.card_android.android.reader.NfcManager +import com.tangem.ui.activity.ConfirmTransactionActivity import com.tangem.util.UtilHelper import com.tangem.wallet.R -import kotlinx.android.synthetic.main.activity_prepare_transaction.* +import kotlinx.android.synthetic.tangemAccess.activity_prepare_transaction.* import java.io.IOException import javax.inject.Inject diff --git a/app/src/main/res/layout/activity_prepare_transaction.xml b/app/src/tangemAccess/res/layout/activity_prepare_transaction.xml similarity index 99% rename from app/src/main/res/layout/activity_prepare_transaction.xml rename to app/src/tangemAccess/res/layout/activity_prepare_transaction.xml index 6f465b04a0..8da055a7a0 100644 --- a/app/src/main/res/layout/activity_prepare_transaction.xml +++ b/app/src/tangemAccess/res/layout/activity_prepare_transaction.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.tangem.ui.activity.PrepareTransactionActivity" + tools:context="com.tangem.ui.PrepareTransactionActivity" tools:ignore="contentDescription"> = Build.VERSION_CODES.N) + Html.fromHtml(engine!!.balanceHTML, Html.FROM_HTML_MODE_LEGACY) + else + Html.fromHtml(engine!!.balanceHTML) + tvBalance.text = html + + if (!engine.allowSelectFeeInclusion()) { + rgIncFee.visibility = View.INVISIBLE + } else { + rgIncFee.visibility = View.VISIBLE + } + + if (ctx.card!!.remainingSignatures < 2) + etAmount.isEnabled = false + + tvCurrency.text = engine.balance.currency + etAmount.setText(engine.balance.toValueString()) + + // limit number of symbols after comma + etAmount.filters = engine.amountInputFilters + + // set listeners + etAmount.setOnEditorActionListener { lv, actionId, _ -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + val imm = lv.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.hideSoftInputFromWindow(lv.windowToken, 0) + lv.clearFocus() + true + } else { + false + } + } + + btnVerify.setOnClickListener { + if (!UtilHelper.isOnline(this)) { + Toast.makeText(this, R.string.no_connection, Toast.LENGTH_LONG).show() + return@setOnClickListener + } + + val engine1 = CoinEngineFactory.create(ctx) + val strAmount: String = etAmount.text.toString().replace(",", ".") + val amount = engine1!!.convertToAmount(etAmount.text.toString(), tvCurrency.text.toString()) + + try { + if (!engine.checkNewTransactionAmount(amount)) + etAmount.error = getString(R.string.not_enough_funds_on_your_card) + else + etAmount.error = null + } catch (e: Exception) { + etAmount.error = getString(R.string.unknown_amount_format) + } + + // check wallet address + if (!engine1.validateAddress(etWallet.text.toString())) { + etWallet.error = getString(R.string.incorrect_destination_wallet_address) + return@setOnClickListener + } else + etWallet.error = null + + if (etWallet.text.toString() == ctx.coinData!!.wallet) { + etWallet.error = getString(R.string.destination_wallet_address_equal_source_address) + return@setOnClickListener + } + + if (!etAmount.error.isNullOrEmpty() || !etWallet.error.isNullOrEmpty()) { + return@setOnClickListener + } + + val intent = Intent(baseContext, ConfirmTransactionActivity::class.java) + ctx.saveToIntent(intent) + intent.putExtra(Constant.EXTRA_TARGET_ADDRESS, etWallet!!.text.toString()) + intent.putExtra(Constant.EXTRA_FEE_INCLUDED, (rgIncFee!!.checkedRadioButtonId == R.id.rbFeeIn)) + intent.putExtra(Constant.EXTRA_AMOUNT, strAmount) + intent.putExtra(Constant.EXTRA_AMOUNT_CURRENCY, tvCurrency.text.toString()) + startActivityForResult(intent, Constant.REQUEST_CODE_SEND_TRANSACTION__) + } + + ivCamera.setOnClickListener { navigator.showQrScanActivity(this, Constant.REQUEST_CODE_SCAN_QR) } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == Constant.REQUEST_CODE_SCAN_QR && resultCode == Activity.RESULT_OK && data != null && data.extras!!.containsKey("QRCode")) { + var code = data.getStringExtra("QRCode") + when (ctx.blockchain) { + Blockchain.Bitcoin -> { + if (code.contains("bitcoin:")) { + val tmp = code.split("bitcoin:".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + code = tmp[1] + } + } + Blockchain.Ethereum, Blockchain.Token -> { + if (code.contains("ethereum:")) { + val tmp = code.split("ethereum:".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + code = tmp[1] + } else if (code.contains("blockchain:")) { + val tmp = code.split("blockchain:".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + code = tmp[1] + } + } + else -> { + } + } + etWallet?.setText(code) + } else if (requestCode == Constant.REQUEST_CODE_SEND_TRANSACTION__) { + setResult(resultCode, data) + finish() + } + } + + override fun onTagDiscovered(tag: Tag) { + try { + nfcManager.ignoreTag(tag) + } catch (e: IOException) { + e.printStackTrace() + } + } + +} \ No newline at end of file diff --git a/app/src/tangemCardano/res/layout/activity_prepare_transaction.xml b/app/src/tangemCardano/res/layout/activity_prepare_transaction.xml new file mode 100644 index 0000000000..8da055a7a0 --- /dev/null +++ b/app/src/tangemCardano/res/layout/activity_prepare_transaction.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file