From ce6351f209bb3cda42780ea105ca2b55f20bbfa8 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 10 Nov 2021 21:03:05 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/tap/common/redux/StateDialog.kt | 5 ++-- .../AddressInfoBottomSheetDialog.kt | 28 +++++++++++++++++-- .../note/redux/OnboardingNoteMiddleware.kt | 8 ++---- .../twins/redux/TwinCardsMiddleware.kt | 7 +---- .../redux/middlewares/WalletMiddleware.kt | 8 ++++++ .../wallet/redux/reducers/WalletReducer.kt | 15 +++------- .../wallet/ui/WalletDetailsFragment.kt | 2 ++ .../wallet/ui/wallet/SingleWalletView.kt | 4 ++- .../layout/dialog_onboarding_address_info.xml | 24 +++++++++------- .../main/res/layout/layout_wallet_details.xml | 14 ++++++++++ .../main/res/values/strings_untranslated.xml | 2 +- 11 files changed, 77 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/redux/StateDialog.kt b/app/src/main/java/com/tangem/tap/common/redux/StateDialog.kt index 0db3aa9b0a..bcde7dae3b 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/StateDialog.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/StateDialog.kt @@ -1,7 +1,7 @@ package com.tangem.tap.common.redux -import com.tangem.common.extensions.VoidCallback import com.tangem.tap.features.wallet.redux.AddressData +import com.tangem.tap.features.wallet.redux.Currency /** [REDACTED_AUTHOR] @@ -11,8 +11,7 @@ interface StateDialog sealed class AppDialog : StateDialog { object ScanFailsDialog : AppDialog() data class AddressInfoDialog( + val currency: Currency, val addressData: AddressData, - val onCopyAddress: VoidCallback, - val onShareAddress: VoidCallback ) : AppDialog() } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/AddressInfoBottomSheetDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/AddressInfoBottomSheetDialog.kt index 92ed981276..a7bafedba2 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/AddressInfoBottomSheetDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/AddressInfoBottomSheetDialog.kt @@ -4,7 +4,10 @@ import android.content.Context import com.google.android.material.bottomsheet.BottomSheetDialog import com.tangem.tap.common.extensions.copyToClipboard import com.tangem.tap.common.extensions.dispatchDialogHide +import com.tangem.tap.common.extensions.dispatchShare +import com.tangem.tap.common.extensions.dispatchToastNotification import com.tangem.tap.common.redux.AppDialog +import com.tangem.tap.features.wallet.redux.Currency import com.tangem.tap.store import com.tangem.wallet.R import kotlinx.android.synthetic.main.dialog_onboarding_address_info.* @@ -35,10 +38,31 @@ class AddressInfoBottomSheetDialog( tv_address.text = data.address btn_fl_copy_address.setOnClickListener { context.copyToClipboard(data.address) - stateDialog.onCopyAddress() + store.dispatchToastNotification(R.string.copy_toast_msg) } btn_fl_share.setOnClickListener { - stateDialog.onShareAddress() + store.dispatchShare(data.shareUrl) + } + tv_recieve_message.text = getQRReceiveMessage(tv_recieve_message.context, stateDialog.currency) + } +} + +fun getQRReceiveMessage(context: Context, currency: Currency): String { + return when (currency) { + is Currency.Blockchain -> { + context.getString( + R.string.address_qr_code_message_format, + currency.blockchain.fullName, + currency.currencySymbol + ) + } + is Currency.Token -> { + context.getString( + R.string.address_qr_code_message_token_format, + currency.token.name, + currency.currencySymbol, + currency.blockchain.fullName + ) } } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt index b28c60fbe3..558f5b0e5f 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt @@ -134,12 +134,8 @@ private fun handleNoteAction(action: Action, dispatch: DispatchFunction) { } is OnboardingNoteAction.ShowAddressInfoDialog -> { val addressData = noteState.walletManager?.getAddressData() ?: return - val addressWasCopied = globalState.resources.strings.addressWasCopied - val appDialog = AppDialog.AddressInfoDialog( - addressData, - onCopyAddress = { store.dispatchToastNotification(addressWasCopied) }, - onShareAddress = { store.dispatchShare(addressData.shareUrl) } - ) + + val appDialog = AppDialog.AddressInfoDialog(noteState.walletBalance.currency, addressData) store.dispatchDialogShow(appDialog) } is OnboardingNoteAction.TopUp -> { diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt index 6986100a02..818b1974aa 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt @@ -239,12 +239,7 @@ private fun handle(action: Action, dispatch: DispatchFunction) { is TwinCardsAction.ShowAddressInfoDialog -> { val addressData = twinCardsState.walletManager?.getAddressData() ?: return - val addressWasCopied = globalState.resources.strings.addressWasCopied - val appDialog = AppDialog.AddressInfoDialog( - addressData, - onCopyAddress = { store.dispatchToastNotification(addressWasCopied) }, - onShareAddress = { store.dispatchShare(addressData.shareUrl) } - ) + val appDialog = AppDialog.AddressInfoDialog(twinCardsState.walletBalance.currency, addressData) store.dispatchDialogShow(appDialog) } is TwinCardsAction.TopUp -> { diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WalletMiddleware.kt index f4188096f4..a33d9dbb41 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WalletMiddleware.kt @@ -12,6 +12,7 @@ import com.tangem.operations.attestation.OnlineCardVerifier import com.tangem.tap.* import com.tangem.tap.common.analytics.FirebaseAnalyticsHandler import com.tangem.tap.common.extensions.* +import com.tangem.tap.common.redux.AppDialog import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.common.redux.navigation.AppScreen @@ -193,6 +194,13 @@ class WalletMiddleware { store.dispatch(NavigationAction.NavigateTo(AppScreen.Send)) } } + is WalletAction.ShowDialog.QrCode -> { + val selectedWalletData = walletState.getWalletData(walletState.selectedWallet) ?: return + val selectedAddressData = selectedWalletData.walletAddresses?.selectedAddress ?: return + + val currency = selectedWalletData.currency + store.dispatchDialogShow(AppDialog.AddressInfoDialog(currency, selectedAddressData)) + } } } diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/WalletReducer.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/WalletReducer.kt index 7cd2259e47..b798b5be06 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/WalletReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/WalletReducer.kt @@ -3,7 +3,10 @@ package com.tangem.tap.features.wallet.redux.reducers import com.tangem.blockchain.common.AmountType import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.Wallet -import com.tangem.tap.common.extensions.* +import com.tangem.tap.common.extensions.toFiatString +import com.tangem.tap.common.extensions.toFiatValue +import com.tangem.tap.common.extensions.toFormattedCurrencyString +import com.tangem.tap.common.extensions.toFormattedFiatValue import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.FiatCurrencyName import com.tangem.tap.domain.TapError @@ -205,16 +208,6 @@ private fun internalReduce(action: Action, state: AppState): WalletState { } newState = newState.copy(cardImage = Artwork(artworkId = artworkUrl)) } - is WalletAction.ShowDialog.QrCode -> { - val selectedWalletData = newState.getWalletData(newState.selectedWallet) - newState = newState.copy( - walletDialog = WalletDialog.QrDialog( - selectedWalletData?.walletAddresses?.selectedAddress?.shareUrl?.toQrCode(), - selectedWalletData?.walletAddresses?.selectedAddress?.shareUrl, - selectedWalletData?.currencyData?.currency - ) - ) - } is WalletAction.ShowDialog.SignedHashesMultiWalletDialog -> { newState = newState.copy(walletDialog = WalletDialog.SignedHashesMultiWalletDialog) } 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 28c3b09488..154f46bd8a 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 @@ -14,6 +14,7 @@ import com.tangem.tap.common.SnackbarHandler import com.tangem.tap.common.extensions.* import com.tangem.tap.common.redux.StateDialog import com.tangem.tap.common.redux.navigation.NavigationAction +import com.tangem.tap.features.onboarding.getQRReceiveMessage import com.tangem.tap.features.wallet.models.PendingTransaction import com.tangem.tap.features.wallet.redux.* import com.tangem.tap.features.wallet.ui.adapters.PendingTransactionsAdapter @@ -180,6 +181,7 @@ class WalletDetailsFragment : Fragment(R.layout.fragment_wallet_details), StoreS requireContext())) } iv_qr_code.setImageBitmap(state.walletAddresses.selectedAddress.shareUrl.toQrCode()) + tv_recieve_message.text = getQRReceiveMessage(tv_recieve_message.context, state.currency) } } 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 08e1b03466..4332dce369 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 @@ -140,7 +140,9 @@ class SingleWalletView : WalletView { store.dispatch(WalletAction.CopyAddress(addressString, fragment.requireContext())) } } - btn_show_qr.setOnClickListener { store.dispatch(WalletAction.ShowDialog.QrCode) } + btn_show_qr.setOnClickListener { + store.dispatch(WalletAction.ShowDialog.QrCode) + } setupTradeButton(fragment, state.tradeCryptoState) } diff --git a/app/src/main/res/layout/dialog_onboarding_address_info.xml b/app/src/main/res/layout/dialog_onboarding_address_info.xml index 5259725069..55617e452f 100644 --- a/app/src/main/res/layout/dialog_onboarding_address_info.xml +++ b/app/src/main/res/layout/dialog_onboarding_address_info.xml @@ -24,24 +24,26 @@ app:layout_constraintTop_toBottomOf="@+id/pseudo_toolbar" /> + app:layout_constraintBottom_toTopOf="@+id/guideline3" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/imv_qr_code" + tools:text="@string/address_qr_code_message_token_format" /> + app:layout_constraintGuide_percent="0.8" /> @@ -104,11 +107,12 @@ app:layout_constraintTop_toTopOf="@+id/guideline3"> + android:src="@drawable/ic_share_chip" + android:tint="@color/accent" /> diff --git a/app/src/main/res/layout/layout_wallet_details.xml b/app/src/main/res/layout/layout_wallet_details.xml index 63bbb5f031..2532441b29 100644 --- a/app/src/main/res/layout/layout_wallet_details.xml +++ b/app/src/main/res/layout/layout_wallet_details.xml @@ -179,6 +179,20 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/btn_copy" /> + diff --git a/app/src/main/res/values/strings_untranslated.xml b/app/src/main/res/values/strings_untranslated.xml index 314565b97f..5178ff7292 100644 --- a/app/src/main/res/values/strings_untranslated.xml +++ b/app/src/main/res/values/strings_untranslated.xml @@ -195,7 +195,7 @@ Continue Balance Send only %s (%s) to this address. Sending any other currency will result in its irreversible loss. - Send only %s (%s) from %@snetwork to this address. Sending any other currency will result in its irreversible loss. + Send only %s (%s) from %s network to this address. Sending any other currency will result in its irreversible loss. If the process of re-creating the wallet gets interrupted in any way, you’ll have to start over.