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 @@
+
+
+
+
+
+
+
+
+
+
+
+