From 0c57e22fb3e4780f230b9cef846aa5d772fa25a5 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 27 May 2022 17:35:14 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../wallet/ui/WalletDetailsFragment.kt | 29 +++--- .../wallet/ui/view/WalletDetailsButtonsRow.kt | 45 ++++++++++ .../res/layout/fragment_wallet_details.xml | 89 ++++--------------- .../view_wallet_details_buttons_row.xml | 50 +++++++++++ 4 files changed, 132 insertions(+), 81 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/features/wallet/ui/view/WalletDetailsButtonsRow.kt create mode 100644 app/src/main/res/layout/view_wallet_details_buttons_row.xml diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt index f267c25f89..1613621c1c 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt @@ -92,14 +92,18 @@ class WalletDetailsFragment : Fragment(R.layout.fragment_wallet_details), } private fun setupButtons() = with(binding) { - btnConfirm.text = getString(R.string.wallet_button_send) - btnConfirm.setOnClickListener { store.dispatch(WalletAction.Send()) } - - binding.lWalletDetails.btnShare.setOnClickListener { store.dispatch(WalletAction.ShowDialog.QrCode) } - - btnTrade.setOnClickListener { store.dispatch(WalletAction.TradeCryptoAction.Buy) } - - btnSell.setOnClickListener { store.dispatch(WalletAction.TradeCryptoAction.Sell) } + rowButtons.onBuyClick = { + store.dispatch(WalletAction.TradeCryptoAction.Buy) + } + rowButtons.onSellClick = { + store.dispatch(WalletAction.TradeCryptoAction.Sell) + } + rowButtons.onTradeClick = { + store.dispatch(WalletAction.DialogAction.ChooseTradeActionDialog) + } + rowButtons.onSendClick = { + store.dispatch(WalletAction.Send()) + } } private fun setupTestActionButton() { @@ -156,7 +160,6 @@ class WalletDetailsFragment : Fragment(R.layout.fragment_wallet_details), } private fun setupButtons(selectedWallet: WalletData) = with(binding) { - btnConfirm.isEnabled = selectedWallet.mainButton.enabled lWalletDetails.btnCopy.setOnClickListener { selectedWallet.walletAddresses?.selectedAddress?.address?.let { addressString -> store.dispatch(WalletAction.CopyAddress(addressString, requireContext())) @@ -167,8 +170,12 @@ class WalletDetailsFragment : Fragment(R.layout.fragment_wallet_details), store.dispatch(WalletAction.ShareAddress(addressString, requireContext())) } } - btnTrade.isEnabled = selectedWallet.tradeCryptoState.buyingAllowed - btnSell.show(selectedWallet.tradeCryptoState.sellingAllowed) + + rowButtons.updateButtonsVisibility( + buyAllowed = selectedWallet.tradeCryptoState.buyingAllowed, + sellAllowed = selectedWallet.tradeCryptoState.sellingAllowed, + sendAllowed = selectedWallet.mainButton.enabled + ) } private fun handleWarnings(selectedWallet: WalletData) = with(binding) { diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/view/WalletDetailsButtonsRow.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/view/WalletDetailsButtonsRow.kt new file mode 100644 index 0000000000..f4da3e86ce --- /dev/null +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/view/WalletDetailsButtonsRow.kt @@ -0,0 +1,45 @@ +package com.tangem.tap.features.wallet.ui.view + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.LinearLayout +import androidx.core.view.isVisible +import com.tangem.wallet.databinding.ViewWalletDetailsButtonsRowBinding + +internal class WalletDetailsButtonsRow @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0, +) : LinearLayout(context, attrs, defStyleAttr) { + private val binding = ViewWalletDetailsButtonsRowBinding.inflate( + LayoutInflater.from(context), + this + ) + + var onBuyClick: (() -> Unit)? = null + var onSellClick: (() -> Unit)? = null + var onTradeClick: (() -> Unit)? = null + var onSendClick: (() -> Unit)? = null + + init { + orientation = HORIZONTAL + + with(binding) { + btnBuy.setOnClickListener { onBuyClick?.invoke() } + btnSell.setOnClickListener { onSellClick?.invoke() } + btnTrade.setOnClickListener { onTradeClick?.invoke() } + btnSend.setOnClickListener { onSendClick?.invoke() } + } + } + + fun renderButtons( + buyAllowed: Boolean, + sellAllowed: Boolean, + ) = with(binding) { + btnBuy.isVisible = (buyAllowed && !sellAllowed) || (!buyAllowed && !sellAllowed) + btnBuy.isEnabled = buyAllowed + btnSell.isVisible = !buyAllowed && sellAllowed + btnTrade.isVisible = buyAllowed && sellAllowed + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_wallet_details.xml b/app/src/main/res/layout/fragment_wallet_details.xml index cd51f4c2fa..04649efe6b 100644 --- a/app/src/main/res/layout/fragment_wallet_details.xml +++ b/app/src/main/res/layout/fragment_wallet_details.xml @@ -105,78 +105,27 @@ android:layout_marginStart="16dp" android:layout_marginEnd="16dp" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/l_wallet_details" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/l_wallet_details" /> + android:id="@+id/barrier" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:barrierDirection="bottom" + app:constraint_referenced_ids="l_wallet_details" /> - - - - - - - - - + @@ -184,4 +133,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/view_wallet_details_buttons_row.xml b/app/src/main/res/layout/view_wallet_details_buttons_row.xml new file mode 100644 index 0000000000..bb5bd190b0 --- /dev/null +++ b/app/src/main/res/layout/view_wallet_details_buttons_row.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + +