Updated on 2026-08-14

This commit is contained in:
Tangem 2022-05-27 17:35:14 +03:00
parent b9113a443a
commit 0c57e22fb3
4 changed files with 132 additions and 81 deletions

View file

@ -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) {

View file

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

View file

@ -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" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="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" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier_left_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="end"
app:constraint_referenced_ids="btn_trade, btn_sell" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier_right_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="start"
app:constraint_referenced_ids="btn_sell, btn_confirm" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_trade"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
android:layout_marginStart="16dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="33dp"
android:text="@string/wallet_button_buy"
app:icon="@drawable/ic_arrow_up"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btn_sell"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rv_warning_messages"
app:layout_constraintVertical_bias="1" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_sell"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
android:layout_marginStart="4dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="33dp"
android:text="@string/wallet_button_sell"
app:icon="@drawable/ic_arrow_down"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/btn_confirm"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/btn_trade"
app:layout_constraintTop_toBottomOf="@+id/rv_warning_messages"
app:layout_constraintVertical_bias="1" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_confirm"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
android:layout_marginStart="4dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="33dp"
android:text="@string/wallet_button_send"
app:icon="@drawable/ic_send"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/btn_sell"
app:layout_constraintTop_toBottomOf="@+id/rv_warning_messages"
app:layout_constraintVertical_bias="1" />
<com.tangem.tap.features.wallet.ui.view.WalletDetailsButtonsRow
android:id="@+id/row_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:layout_marginBottom="32dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintVertical_bias="1"
app:layout_constraintTop_toBottomOf="@id/rv_warning_messages"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@ -184,4 +133,4 @@
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:parentTag="android.widget.LinearLayout"
tools:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_trade"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
android:layout_marginEnd="6dp"
android:layout_weight="1"
android:visibility="gone"
android:text="@string/wallet_button_trade"
app:icon="@drawable/ic_arrows_up_down"
tools:visibility="visible" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_buy"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
android:layout_marginEnd="6dp"
android:layout_weight="1"
android:visibility="gone"
android:text="@string/wallet_button_buy"
app:icon="@drawable/ic_arrow_up" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_sell"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
android:layout_marginEnd="6dp"
android:layout_weight="1"
android:visibility="gone"
android:text="@string/wallet_button_sell"
app:icon="@drawable/ic_arrow_down" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_send"
style="@style/TapButtonWithIcon"
android:layout_width="0dp"
android:layout_marginStart="6dp"
android:layout_weight="1"
android:text="@string/wallet_button_send"
app:icon="@drawable/ic_send" />
</merge>