From 96fc2f8267e23fcdd48f55bc0d6392f031a2b73d Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Aug 2022 21:34:57 +0400 Subject: [PATCH 1/5] Updated on 2026-08-14 --- .../ui/walletconnect/dialogs/ApproveWcSessionDialog.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt index 4af9323fa1..b9fd651bb8 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt @@ -5,7 +5,6 @@ import androidx.appcompat.app.AlertDialog import com.tangem.blockchain.common.Blockchain import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.features.details.redux.walletconnect.WalletConnectAction -import com.tangem.tap.features.details.redux.walletconnect.WalletConnectDialog import com.tangem.tap.features.details.redux.walletconnect.WalletConnectSession import com.tangem.tap.store import com.tangem.wallet.R @@ -23,19 +22,22 @@ class ApproveWcSessionDialog { setTitle(context.getString(R.string.wallet_connect)) setMessage(message) setPositiveButton(context.getText(R.string.common_start)) { _, _ -> + store.dispatch(GlobalAction.HideDialog) store.dispatch(WalletConnectAction.ChooseNetwork(session.wallet.blockchain!!)) } if (networks.size > 1) { setNeutralButton(context.getText(R.string.wallet_connect_select_network)) { _, _ -> - store.dispatch(GlobalAction.HideDialog(WalletConnectDialog.ApproveWcSession(session, networks))) + store.dispatch(GlobalAction.HideDialog) store.dispatch(WalletConnectAction.SelectNetwork(session = session, networks = networks)) } } setNegativeButton(context.getText(R.string.common_reject)) { _, _ -> + store.dispatch(GlobalAction.HideDialog) store.dispatch(WalletConnectAction.FailureEstablishingSession(session.session)) } - setOnDismissListener { - store.dispatch(GlobalAction.HideDialog(WalletConnectDialog.ApproveWcSession(session, networks))) + setOnCancelListener { + store.dispatch(GlobalAction.HideDialog) + store.dispatch(WalletConnectAction.FailureEstablishingSession(session.session)) } }.create() } From 9720a85ab455810673f9ad050a3340b052c8b0c3 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Aug 2022 21:36:03 +0400 Subject: [PATCH 2/5] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/common/extensions/Store.kt | 2 +- .../java/com/tangem/tap/common/redux/global/GlobalAction.kt | 2 +- .../com/tangem/tap/common/redux/global/GlobalReducer.kt | 6 +----- .../main/java/com/tangem/tap/common/ui/SimpleAlertDialog.kt | 2 +- .../ui/walletconnect/dialogs/BnbTransactionDialog.kt | 2 +- .../details/ui/walletconnect/dialogs/ChooseNetworkDialog.kt | 4 ++-- .../ui/walletconnect/dialogs/ClipboardOrScanQrDialog.kt | 2 +- .../details/ui/walletconnect/dialogs/PersonalSignDialog.kt | 2 +- .../details/ui/walletconnect/dialogs/TransactionDialog.kt | 2 +- .../products/wallet/ui/dialogs/AddMoreBackupCardsDialog.kt | 2 +- .../products/wallet/ui/dialogs/BackupInProgressDialog.kt | 4 ++-- .../wallet/ui/dialogs/ConfirmDiscardingBackupDialog.kt | 2 +- .../wallet/ui/dialogs/UnfinishedBackupFoundDialog.kt | 4 ++-- 13 files changed, 16 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/extensions/Store.kt b/app/src/main/java/com/tangem/tap/common/extensions/Store.kt index f29950807f..7a0488d1a5 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/Store.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/Store.kt @@ -76,6 +76,6 @@ fun Store<*>.dispatchDialogShow(dialog: StateDialog) { fun Store<*>.dispatchDialogHide() { scope.launch(Dispatchers.Main) { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } } diff --git a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalAction.kt b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalAction.kt index 5e74cc3d0b..4927405ccd 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalAction.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalAction.kt @@ -34,7 +34,7 @@ sealed class GlobalAction : Action { // dialogs data class ShowDialog(val stateDialog: StateDialog) : GlobalAction() - data class HideDialog(val stateDialog: StateDialog? = null) : GlobalAction() + object HideDialog : GlobalAction() sealed class Onboarding { data class Start(val scanResponse: ScanResponse?, val fromHomeScreen: Boolean = true) : GlobalAction() diff --git a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalReducer.kt b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalReducer.kt index d8804bb12a..449d47ae10 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalReducer.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalReducer.kt @@ -68,11 +68,7 @@ fun globalReducer(action: Action, state: AppState): GlobalState { globalState.copy(dialog = action.stateDialog) } is GlobalAction.HideDialog -> { - if (action.stateDialog == null || action.stateDialog == globalState.dialog) { - globalState.copy(dialog = null) - } else { - globalState - } + globalState.copy(dialog = null) } is GlobalAction.ExchangeManager.Init.Success -> { globalState.copy(exchangeManager = action.exchangeManager) diff --git a/app/src/main/java/com/tangem/tap/common/ui/SimpleAlertDialog.kt b/app/src/main/java/com/tangem/tap/common/ui/SimpleAlertDialog.kt index fbb6528a7a..8cd6e7e5ba 100644 --- a/app/src/main/java/com/tangem/tap/common/ui/SimpleAlertDialog.kt +++ b/app/src/main/java/com/tangem/tap/common/ui/SimpleAlertDialog.kt @@ -51,7 +51,7 @@ class SimpleCancelableAlertDialog { setNegativeButton(context.getText(secondaryButtonRes)) { _, _ -> secondaryButtonAction()} } setOnDismissListener { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } }.create() } diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/BnbTransactionDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/BnbTransactionDialog.kt index 1763c140d0..2ec39ca844 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/BnbTransactionDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/BnbTransactionDialog.kt @@ -58,7 +58,7 @@ class BnbTransactionDialog { store.dispatch(WalletConnectAction.RejectRequest(session, sessionId)) } setOnDismissListener { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } }.create() } diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ChooseNetworkDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ChooseNetworkDialog.kt index dedf44dd04..8e0ffe0f4a 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ChooseNetworkDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ChooseNetworkDialog.kt @@ -21,7 +21,7 @@ object ChooseNetworkDialog { store.dispatch(WalletConnectAction.FailureEstablishingSession(session.session)) } .setOnDismissListener { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } .setSingleChoiceItems(networks.map { it.fullName }.toTypedArray(), 0) { _, which -> networks.getOrNull(which)?.let { selectedBlockchain -> @@ -30,7 +30,7 @@ object ChooseNetworkDialog { blockchain = selectedBlockchain, ), ) - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } } .create() diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ClipboardOrScanQrDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ClipboardOrScanQrDialog.kt index 30604f69e9..809b37cf66 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ClipboardOrScanQrDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ClipboardOrScanQrDialog.kt @@ -22,7 +22,7 @@ class ClipboardOrScanQrDialog { store.dispatch(NavigationAction.NavigateTo(AppScreen.QrScan)) } setOnDismissListener { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } }.create() } diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/PersonalSignDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/PersonalSignDialog.kt index ebbf5ac86c..789384c758 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/PersonalSignDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/PersonalSignDialog.kt @@ -29,7 +29,7 @@ class PersonalSignDialog { store.dispatch(WalletConnectAction.RejectRequest(data.session, data.id)) } setOnDismissListener { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } }.create() } diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/TransactionDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/TransactionDialog.kt index 81d5fd6770..192fc3d9e1 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/TransactionDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/TransactionDialog.kt @@ -45,7 +45,7 @@ class TransactionDialog { store.dispatch(WalletConnectAction.RejectRequest(data.session, data.id)) } setOnDismissListener { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } }.create() } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AddMoreBackupCardsDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AddMoreBackupCardsDialog.kt index 0c8b5d924e..883ce390dc 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AddMoreBackupCardsDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AddMoreBackupCardsDialog.kt @@ -20,7 +20,7 @@ class AddMoreBackupCardsDialog { } setOnDismissListener { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } }.create() } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/BackupInProgressDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/BackupInProgressDialog.kt index f6ef3c6138..9b619eef7d 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/BackupInProgressDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/BackupInProgressDialog.kt @@ -13,10 +13,10 @@ class BackupInProgressDialog { setTitle(R.string.alert_title) setMessage(R.string.onboarding_backup_exit_warning) setPositiveButton(R.string.warning_button_ok) { _, _ -> - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } setOnDismissListener { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } }.create() } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/ConfirmDiscardingBackupDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/ConfirmDiscardingBackupDialog.kt index 6ed98a06cc..8b88890be8 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/ConfirmDiscardingBackupDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/ConfirmDiscardingBackupDialog.kt @@ -20,7 +20,7 @@ class ConfirmDiscardingBackupDialog { store.dispatch(BackupAction.DiscardSavedBackup) } setOnDismissListener { - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) } setCancelable(false) }.create() diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/UnfinishedBackupFoundDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/UnfinishedBackupFoundDialog.kt index 9419fb3965..b51a53e29f 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/UnfinishedBackupFoundDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/UnfinishedBackupFoundDialog.kt @@ -15,11 +15,11 @@ class UnfinishedBackupFoundDialog { setTitle(R.string.alert_title) setMessage(R.string.welcome_interrupted_backup_alert_message) setPositiveButton(R.string.welcome_interrupted_backup_alert_resume) { _, _ -> - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) store.dispatch(BackupAction.ResumeBackup) } setNegativeButton(R.string.welcome_interrupted_backup_alert_discard) { _, _ -> - store.dispatch(GlobalAction.HideDialog()) + store.dispatch(GlobalAction.HideDialog) store.dispatch(GlobalAction.ShowDialog(BackupDialog.ConfirmDiscardingBackup)) } setCancelable(false) From 8e4adf2c0c77af5bf8d9bb3947cb8a8dfa6fe46a Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Aug 2022 21:37:00 +0400 Subject: [PATCH 3/5] Updated on 2026-08-14 --- .../java/com/tangem/tap/common/extensions/WalletManager.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt b/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt index 39e0103066..58284b0cc0 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt @@ -22,9 +22,8 @@ import timber.log.Timber */ suspend fun WalletManager.safeUpdate(): Result = try { val scanResponse = store.state.globalState.scanResponse - ?: error("Scan response must not be null") - if (scanResponse.isDemoCard() || TestActions.testAmountInjectionForWalletManagerEnabled) { + if (scanResponse?.isDemoCard() == true || TestActions.testAmountInjectionForWalletManagerEnabled) { delay(500) TestActions.testAmountInjectionForWalletManagerEnabled = false Result.Success(wallet) From 21476816986b211f2a719e3e7c93940340bfedeb Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 17 Aug 2022 09:56:12 +0300 Subject: [PATCH 4/5] Updated on 2026-08-14 --- .../wallet/ui/view/WalletDetailsButtonsRow.kt | 5 +- .../wallet/ui/wallet/MultiWalletView.kt | 52 +++++----- .../wallet/ui/wallet/SingleWalletView.kt | 94 +++++-------------- app/src/main/res/layout/fragment_wallet.xml | 27 ++---- .../view_wallet_details_buttons_row.xml | 62 ++++++------ 5 files changed, 95 insertions(+), 145 deletions(-) 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 index 12efe010c8..1b7eff8f23 100644 --- 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 @@ -12,9 +12,10 @@ internal class WalletDetailsButtonsRow @JvmOverloads constructor( attrs: AttributeSet? = null, defStyleAttr: Int = 0, ) : LinearLayout(context, attrs, defStyleAttr) { + private val binding = ViewWalletDetailsButtonsRowBinding.inflate( LayoutInflater.from(context), - this + this, ) var onBuyClick: (() -> Unit)? = null @@ -36,7 +37,7 @@ internal class WalletDetailsButtonsRow @JvmOverloads constructor( fun updateButtonsVisibility( buyAllowed: Boolean, sellAllowed: Boolean, - sendAllowed: Boolean + sendAllowed: Boolean, ) = with(binding) { btnBuy.isVisible = (buyAllowed && !sellAllowed) || (!buyAllowed && !sellAllowed) btnBuy.isEnabled = buyAllowed diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt index 4267ad7ebd..73504ddbfc 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt @@ -1,5 +1,6 @@ package com.tangem.tap.features.wallet.ui.wallet +import android.widget.Button import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager import com.tangem.common.card.Card @@ -20,11 +21,11 @@ import com.tangem.tap.features.wallet.redux.WalletState import com.tangem.tap.features.wallet.ui.BalanceStatus import com.tangem.tap.features.wallet.ui.WalletFragment import com.tangem.tap.features.wallet.ui.adapters.WalletAdapter +import com.tangem.tap.features.wallet.ui.view.WalletDetailsButtonsRow import com.tangem.tap.store import com.tangem.wallet.R import com.tangem.wallet.databinding.FragmentWalletBinding - class MultiWalletView : WalletView() { private lateinit var walletsAdapter: WalletAdapter override fun changeWalletView(fragment: WalletFragment, binding: FragmentWalletBinding) { @@ -33,14 +34,12 @@ class MultiWalletView : WalletView() { showMultiWalletView(binding) } - private fun showMultiWalletView(binding: FragmentWalletBinding) = with(binding) { tvTwinCardNumber.hide() rvPendingTransaction.hide() lCardBalance.root.hide() lAddress.root.hide() - lButtonsShort.root.hide() - lButtonsLong.root.hide() + rowButtons.hide() lSingleWalletBalance.root.hide() rvMultiwallet.show() btnAddToken.show() @@ -59,7 +58,6 @@ class MultiWalletView : WalletView() { } } - override fun onViewCreated() { setupWalletsRecyclerView() } @@ -86,17 +84,17 @@ class MultiWalletView : WalletView() { TokensAction.LoadCurrencies( supportedBlockchains = currenciesRepository.getBlockchains( card.firmwareVersion, - card.isTestCard + card.isTestCard, ), - scanResponse = store.state.globalState.scanResponse - ) + scanResponse = store.state.globalState.scanResponse, + ), ) store.dispatch(TokensAction.AllowToAddTokens(true)) store.dispatch( TokensAction.SetAddedCurrencies( wallets = state.walletsData, - derivationStyle = card.derivationStyle - ) + derivationStyle = card.derivationStyle, + ), ) store.dispatch(NavigationAction.NavigateTo(AppScreen.AddTokens)) } @@ -105,7 +103,7 @@ class MultiWalletView : WalletView() { private fun handleBackupWarning( binding: FragmentWalletBinding, - showBackupWarning: Boolean + showBackupWarning: Boolean, ) = with(binding.lWalletBackupWarning) { root.isVisible = showBackupWarning root.setOnClickListener { @@ -128,11 +126,11 @@ class MultiWalletView : WalletView() { veilBalance.unVeil() } tvProcessing.animateVisibility( - show = totalBalance.state == ProgressState.Error + show = totalBalance.state == ProgressState.Error, ) tvBalance.text = totalBalance.fiatAmount.formatAmountAsSpannedString( - currencySymbol = totalBalance.fiatCurrency.symbol + currencySymbol = totalBalance.fiatCurrency.symbol, ) tvCurrencyName.text = totalBalance.fiatCurrency.code @@ -145,14 +143,14 @@ class MultiWalletView : WalletView() { private fun handleErrorStates( state: WalletState, binding: FragmentWalletBinding, - fragment: WalletFragment + fragment: WalletFragment, ) { when (state.primaryWallet?.currencyData?.status) { BalanceStatus.EmptyCard -> { showErrorState( binding, fragment.getText(R.string.wallet_error_empty_card), - fragment.getString(R.string.wallet_error_empty_card_subtitle) + fragment.getString(R.string.wallet_error_empty_card_subtitle), ) configureButtonsForEmptyWalletState(binding) } @@ -160,7 +158,7 @@ class MultiWalletView : WalletView() { showErrorState( binding, fragment.getText(R.string.wallet_error_unsupported_blockchain), - fragment.getString(R.string.wallet_error_unsupported_blockchain_subtitle) + fragment.getString(R.string.wallet_error_unsupported_blockchain_subtitle), ) } else -> { /* no-op */ @@ -184,9 +182,21 @@ class MultiWalletView : WalletView() { private fun configureButtonsForEmptyWalletState(binding: FragmentWalletBinding) = with(binding) { - lButtonsLong.root.show() - lButtonsLong.btnConfirmLong.setOnClickListener { store.dispatch(WalletAction.CreateWallet) } - lButtonsLong.btnConfirmLong.text = - fragment?.getText(R.string.wallet_button_create_wallet) + rowButtons.btnBuy.hide() + rowButtons.btnSell.hide() + rowButtons.btnTrade.hide() + rowButtons.show() + + rowButtons.btnSend.text = fragment?.getText(R.string.wallet_button_create_wallet) + rowButtons.onSendClick = { store.dispatch(WalletAction.CreateWallet) } } -} \ No newline at end of file +} + +private val WalletDetailsButtonsRow.btnBuy: Button + get() = this.findViewById(R.id.btn_buy) +private val WalletDetailsButtonsRow.btnSell: Button + get() = this.findViewById(R.id.btn_sell) +private val WalletDetailsButtonsRow.btnTrade: Button + get() = this.findViewById(R.id.btn_trade) +private val WalletDetailsButtonsRow.btnSend: Button + get() = this.findViewById(R.id.btn_send) \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/SingleWalletView.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/SingleWalletView.kt index bcbb6a06ff..fa046cc3f0 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/SingleWalletView.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/SingleWalletView.kt @@ -2,7 +2,6 @@ package com.tangem.tap.features.wallet.ui.wallet import android.view.View import android.view.ViewGroup -import android.widget.Button import androidx.recyclerview.widget.LinearLayoutManager import com.tangem.domain.common.TwinCardNumber import com.tangem.tap.common.extensions.beginDelayedTransition @@ -12,11 +11,15 @@ import com.tangem.tap.common.extensions.show import com.tangem.tap.features.onboarding.products.twins.redux.TwinCardsState import com.tangem.tap.features.wallet.models.Currency import com.tangem.tap.features.wallet.models.PendingTransaction -import com.tangem.tap.features.wallet.redux.* +import com.tangem.tap.features.wallet.redux.WalletAction +import com.tangem.tap.features.wallet.redux.WalletData +import com.tangem.tap.features.wallet.redux.WalletMainButton +import com.tangem.tap.features.wallet.redux.WalletState import com.tangem.tap.features.wallet.ui.BalanceWidget import com.tangem.tap.features.wallet.ui.MultipleAddressUiHelper import com.tangem.tap.features.wallet.ui.WalletFragment import com.tangem.tap.features.wallet.ui.adapters.PendingTransactionsAdapter +import com.tangem.tap.features.wallet.ui.view.WalletDetailsButtonsRow import com.tangem.tap.store import com.tangem.wallet.R import com.tangem.wallet.databinding.FragmentWalletBinding @@ -55,7 +58,7 @@ class SingleWalletView : WalletView() { state.primaryWallet ?: return setupTwinCards(state.twinCardsState, binding) - setupButtons(state.primaryWallet, state.isTangemTwins, binding) + setupButtons(state.primaryWallet, binding) setupAddressCard(state.primaryWallet, binding) showPendingTransactionsIfPresent(state.primaryWallet.pendingTransactions) setupBalance(state, state.primaryWallet) @@ -79,9 +82,7 @@ class SingleWalletView : WalletView() { } } - private fun setupTwinCards( - twinCardsState: TwinCardsState?, binding: FragmentWalletBinding, - ) = with(binding) { + private fun setupTwinCards(twinCardsState: TwinCardsState?, binding: FragmentWalletBinding) = with(binding) { twinCardsState?.cardNumber?.let { cardNumber -> tvTwinCardNumber.show() val number = when (cardNumber) { @@ -96,19 +97,8 @@ class SingleWalletView : WalletView() { } } - private fun setupButtons( - state: WalletData, isTwinsWallet: Boolean, binding: FragmentWalletBinding, - ) = with(binding) { - setupButtonsType(state, binding) - val tradeState = state.tradeCryptoState - val btnConfirm = if (tradeState.isAvailableToSell() || tradeState.isAvailableToBuy()) { - lButtonsShort.btnConfirm - } else { - lButtonsLong.btnConfirmLong - } - - setupConfirmButton(state, btnConfirm, isTwinsWallet) - + private fun setupButtons(state: WalletData, binding: FragmentWalletBinding) = with(binding) { + setupRowButtons(state, rowButtons) lAddress.btnCopy.setOnClickListener { state.walletAddresses?.selectedAddress?.address?.let { addressString -> store.dispatch(WalletAction.CopyAddress(addressString, fragment!!.requireContext())) @@ -124,64 +114,22 @@ class SingleWalletView : WalletView() { ) } } - - setupTradeButton(binding, state.tradeCryptoState) } - private fun setupTradeButton(binding: FragmentWalletBinding, tradeCryptoState: TradeCryptoState) { - val allowedToBuy = tradeCryptoState.isAvailableToBuy() - val allowedToSell = tradeCryptoState.isAvailableToSell() - val action = when { - allowedToBuy && !allowedToSell -> WalletAction.TradeCryptoAction.Buy() - !allowedToBuy && allowedToSell -> WalletAction.TradeCryptoAction.Sell - allowedToBuy && allowedToSell -> WalletAction.DialogAction.ChooseTradeActionDialog - else -> null - } - val text = when { - allowedToBuy && !allowedToSell -> R.string.wallet_button_buy - !allowedToBuy && allowedToSell -> R.string.wallet_button_sell - allowedToBuy && allowedToSell -> R.string.wallet_button_trade - else -> R.string.wallet_button_trade - } - val icon = when { - allowedToBuy && !allowedToSell -> R.drawable.ic_arrow_up - !allowedToBuy && allowedToSell -> R.drawable.ic_arrow_down - allowedToBuy && allowedToSell -> R.drawable.ic_arrows_up_down - else -> null - } - with(binding) { - lButtonsShort.btnTrade.text = fragment?.getText(text) - icon?.let { lButtonsShort.btnTrade.setIconResource(it) } - lButtonsShort.btnTrade.setOnClickListener { if (action != null) store.dispatch(action) } - } - } + private fun setupRowButtons(state: WalletData, rowButtons: WalletDetailsButtonsRow) { + val allowedToBuy = state.tradeCryptoState.isAvailableToBuy() + val allowedToSell = state.tradeCryptoState.isAvailableToSell() + rowButtons.updateButtonsVisibility( + buyAllowed = allowedToBuy, + sellAllowed = allowedToSell, + sendAllowed = state.mainButton.enabled, + ) - private fun setupButtonsType(state: WalletData, binding: FragmentWalletBinding) = with(binding) { - if (state.tradeCryptoState.isAvailableToSell() || state.tradeCryptoState.isAvailableToBuy()) { - lButtonsLong.root.hide() - lButtonsShort.root.show() - } else { - lButtonsLong.root.show() - lButtonsShort.root.hide() - } - } + rowButtons.onBuyClick = { store.dispatch(WalletAction.TradeCryptoAction.Buy()) } + rowButtons.onSendClick = { store.dispatch(WalletAction.TradeCryptoAction.Sell) } + rowButtons.onTradeClick = { store.dispatch(WalletAction.DialogAction.ChooseTradeActionDialog) } - private fun setupConfirmButton( - state: WalletData, btnConfirm: Button, isTwinsWallet: Boolean, - ) { - val buttonTitle = when (state.mainButton) { - is WalletMainButton.SendButton -> R.string.wallet_button_send - is WalletMainButton.CreateWalletButton -> { - if (!isTwinsWallet) { - R.string.wallet_button_create_wallet - } else { - R.string.wallet_button_create_twin_wallet - } - } - } - btnConfirm.text = fragment?.getString(buttonTitle) - btnConfirm.isEnabled = state.mainButton.enabled - btnConfirm.setOnClickListener { + rowButtons.onSendClick = { when (state.mainButton) { is WalletMainButton.SendButton -> store.dispatch(WalletAction.Send()) is WalletMainButton.CreateWalletButton -> store.dispatch(WalletAction.CreateWallet) diff --git a/app/src/main/res/layout/fragment_wallet.xml b/app/src/main/res/layout/fragment_wallet.xml index b2118902ec..fa0eaf1398 100644 --- a/app/src/main/res/layout/fragment_wallet.xml +++ b/app/src/main/res/layout/fragment_wallet.xml @@ -47,7 +47,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:clipToPadding="false" - android:paddingBottom="74dp"> + android:paddingBottom="32dp"> - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + 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:orientation="horizontal" + tools:parentTag="android.widget.LinearLayout"> - + + - - + + + + 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" /> From 463be0148f4105394d98b02401e5c618a7111266 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 17 Aug 2022 11:14:44 +0400 Subject: [PATCH 5/5] Updated on 2026-08-14 --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 3fdecfb84c..d0b96119fd 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -2,7 +2,7 @@ ext.versions = [ kotlin : '1.6.10', build_gradle : '7.1.3', tangem_card_sdk : 'develop-159', - tangem_blockchain_sdk: 'develop-103', + tangem_blockchain_sdk: 'develop-104', // tangem_blockchain_sdk: '0.0.1', ]