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.