From fd23ba7da78a8f87bcd75ef7b9fa507cb6c082b3 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Jun 2020 15:26:30 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../main/java/com/tangem/data/Blockchain.java | 2 +- .../fragment/wallet/LoadedWalletFragment.kt | 34 +++++++++++----- .../fragment/wallet/LoadedWalletViewModel.kt | 7 +++- .../main/res/drawable/ic_payid_logo_dark.xml | 37 +++++++++++++++++ app/src/main/res/layout/fr_loaded_wallet.xml | 40 ++++++++++++++----- 5 files changed, 95 insertions(+), 25 deletions(-) create mode 100644 app/src/main/res/drawable/ic_payid_logo_dark.xml diff --git a/app/src/main/java/com/tangem/data/Blockchain.java b/app/src/main/java/com/tangem/data/Blockchain.java index b2771a6bb2..739e68334c 100644 --- a/app/src/main/java/com/tangem/data/Blockchain.java +++ b/app/src/main/java/com/tangem/data/Blockchain.java @@ -20,7 +20,7 @@ public enum Blockchain { Rootstock("RSK", "RBTC", 1.0, R.drawable.tangem2, "RSK"), RootstockToken("RskToken", "RBTC", 1.0, R.drawable.tangem2, "RSK"), Cardano("CARDANO", "ADA", 1000000.0, R.drawable.tangem2, "Cardano"), - Ripple("XRP", "XRP", 1000000.0, R.drawable.ic_logo_xrp, "XRP"), + Ripple("XRP", "XRP", 1000000.0, R.drawable.ic_logo_xrp, "XRP Ledger"), Binance("BINANCE", "BNB", 100000000.0, R.drawable.ic_logo_binance, "Binance"), BinanceTestNet("BINANCE/test", "BNB", 100000000.0, R.drawable.ic_logo_binance, "Binance Testnet"), BinanceAsset("BinanceAsset", "BNB", 100000000.0, R.drawable.ic_logo_binance, "Binance"), diff --git a/app/src/main/java/com/tangem/ui/fragment/wallet/LoadedWalletFragment.kt b/app/src/main/java/com/tangem/ui/fragment/wallet/LoadedWalletFragment.kt index d9204523e3..54117ddedb 100644 --- a/app/src/main/java/com/tangem/ui/fragment/wallet/LoadedWalletFragment.kt +++ b/app/src/main/java/com/tangem/ui/fragment/wallet/LoadedWalletFragment.kt @@ -25,7 +25,6 @@ import com.tangem.App import com.tangem.Constant import com.tangem.data.Blockchain import com.tangem.data.dp.PrefsManager -import com.tangem.server_android.PayIdResponse import com.tangem.server_android.Result import com.tangem.server_android.ServerApiTangem import com.tangem.server_android.model.CardVerifyAndGetInfo @@ -67,6 +66,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte companion object { val TAG: String = LoadedWalletFragment::class.java.simpleName const val PAY_ID_TANGEM = "\$payid.tangem.com" + val payIdSupported = setOf(Blockchain.Ripple, Blockchain.Ethereum, Blockchain.Bitcoin) } override val layoutId = R.layout.fr_loaded_wallet @@ -149,21 +149,26 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte btnExtract.backgroundTintList = inactiveColor tvWallet.text = ctx.coinData.wallet - btnLoadItems = mutableListOf( + + btnLoadItems = mutableListOf( getString(R.string.loaded_wallet_load_via_app), getString(R.string.loaded_wallet_load_via_share_address), getString(R.string.loaded_wallet_load_via_qr) ) - if (ctx.blockchain == Blockchain.Ripple) { + + if (payIdSupported.contains(ctx.blockchain)) { + ivPayId.visibility = View.VISIBLE + ivPayId.imageAlpha = 100 + ivPayId.setOnClickListener { createPayIdDialog() } + viewModel.getPayId( - Util.byteArrayToHexString(ctx.card?.cid!!), - Util.byteArrayToHexString(ctx.card?.cardPublicKey!!)) + Util.byteArrayToHexString(ctx.card.cid!!), + Util.byteArrayToHexString(ctx.card.cardPublicKey!!)) .observe( - viewLifecycleOwner, Observer> { result -> + viewLifecycleOwner, Observer { result -> when (result) { is Result.Success -> { - payId = result.data.payId - btnLoadItems.add(result.data.payId) + onPayIdFound(result.data.payId) } is Result.Failure -> { (result.error as? HttpException)?.let { @@ -365,21 +370,21 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte } private fun createPayId(payId: String) { + val network = if (ctx.blockchain == Blockchain.Ripple) "XRPL" else ctx.blockchain.id viewModel.setPayId( Util.byteArrayToHexString(ctx.card!!.cid!!), Util.byteArrayToHexString(ctx.card!!.cardPublicKey!!), payId, ctx.coinData.wallet, - ctx.blockchain.id + network ) .observe(viewLifecycleOwner, Observer { result -> when (result) { is Result.Success -> { - this.payId = payId if (btnLoadItems.last() == getString(R.string.loaded_wallet_create_pay_id)) { btnLoadItems.removeAt(btnLoadItems.lastIndex) } - btnLoadItems.add(payId) + onPayIdFound(payId) Toast.makeText(context, getString(R.string.create_pay_id_success), Toast.LENGTH_LONG).show() } is Result.Failure -> { @@ -389,6 +394,13 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte }) } + private fun onPayIdFound(payId: String) { + ivPayId.imageAlpha = 255 + this.payId = payId + btnLoadItems.add(payId) + ivPayId.setOnClickListener { copyText(payId) } + } + override fun onPause() { super.onPause() if (timerHideErrorAndMessage != null) { diff --git a/app/src/main/java/com/tangem/ui/fragment/wallet/LoadedWalletViewModel.kt b/app/src/main/java/com/tangem/ui/fragment/wallet/LoadedWalletViewModel.kt index e3e3fda021..fb1191f6b1 100644 --- a/app/src/main/java/com/tangem/ui/fragment/wallet/LoadedWalletViewModel.kt +++ b/app/src/main/java/com/tangem/ui/fragment/wallet/LoadedWalletViewModel.kt @@ -9,6 +9,7 @@ import com.tangem.server_android.PayIdService import com.tangem.server_android.Result import com.tangem.server_android.SetPayIdResponse import com.tangem.wallet.TangemContext +import kotlinx.coroutines.CoroutineExceptionHandler class LoadedWalletViewModel : ViewModel() { private val serverApiCommon: ServerApiCommon = ServerApiCommon() @@ -20,7 +21,9 @@ class LoadedWalletViewModel : ViewModel() { } } - private val payId: LiveData> = MutableLiveData() + private val scope = viewModelScope.coroutineContext + CoroutineExceptionHandler { _, ex -> + throw ex + } fun getRateInfo(): LiveData { return rate @@ -62,7 +65,7 @@ class LoadedWalletViewModel : ViewModel() { address: String, network: String ): LiveData> { - return liveData(viewModelScope.coroutineContext) { + return liveData(scope) { emit( payIdService.setPayId( cardId, publicKey, payId, address, network diff --git a/app/src/main/res/drawable/ic_payid_logo_dark.xml b/app/src/main/res/drawable/ic_payid_logo_dark.xml new file mode 100644 index 0000000000..d3fd64e0ea --- /dev/null +++ b/app/src/main/res/drawable/ic_payid_logo_dark.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fr_loaded_wallet.xml b/app/src/main/res/layout/fr_loaded_wallet.xml index 7c19a82299..539ec46f57 100644 --- a/app/src/main/res/layout/fr_loaded_wallet.xml +++ b/app/src/main/res/layout/fr_loaded_wallet.xml @@ -123,19 +123,37 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHeight_min="wrap" app:layout_constraintTop_toBottomOf="@+id/guideline"> - - + android:orientation="horizontal" + android:layout_gravity="center" + android:gravity="center"> + + + + + + +