diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index 4172b1298d..46299409f1 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -13,6 +13,9 @@
The selected does not support the %1$s network
To activate the %1$s blockchain\'s cryptographic encryption, you\'ll need to reset the wallet to factory settings. Please withdraw your funds before doing so to ensure that you don\'t lose them, and then complete the reset process. Access to the current wallet will not be possible after the reset.
Tokens in %1$s network are not supported by this card due to firmware limitation.
+ Thank you for your feedback. We will respond as soon as possible
+ Your suggestions were sent
+ Please try to tap the card exactly as shown in the animation or read our simple guide, or request support. If the problem persists, please request support.
Are you having difficulty scanning your card?
This card is not designed to work with this app
Default Fee
@@ -28,6 +31,8 @@
Dark
Light
System default
+ If system is selected, the app will auto-adjust based on your device\'s system settings
+ System
Theme
App settings
To hide or show your balances, simply flip your device screen down, or switch it off in Settings
@@ -39,7 +44,7 @@
Too many attempts
You have disabled biometric authentication on your phone and will not be able to save wallets in the app. To save wallets, please enable the biometric authentication function in your phone settings.
Start backup process
- From your fiat card or bank account
+ With your bank card or bank account
- %d card
- %d cards
@@ -95,6 +100,7 @@
Delete
Disabled
+ Disconnect
Done
Enable
Enabled
@@ -110,6 +116,7 @@
Speed and fee
Get addresses
Go to provider
+ Go to token
Import
Later
Locked
@@ -130,6 +137,7 @@
Reject
Reload
Rename
+ Retry
Save
Save changes
Search
@@ -158,6 +166,7 @@
There was an error. Please try again.
Unreachable
Unstake
+ Warning
Yes
Contract address copied!
Available networks
@@ -205,6 +214,7 @@
Flip-to-Hide Balances
Issuer
Signed
+ If you forget the code you will lose access to your funds. Code recovery is not possible.
Send feedback
Details
Check your internet connection or switch to a different network
@@ -225,6 +235,8 @@
Exchange by %s
Visit provider’s website to refund your money
Operation failed by provider
+ The transaction amount was refunded in %1$s to your wallet due to OKX or bridge rules. %2$s
+ The amount was refunded in %1$s (%2$s network)
Visit provider’s website for verification
KYC verification required by provider
Canceled
@@ -264,7 +276,7 @@
No tokens found. Please try another request
ID: %s
Transaction ID copied
- From another currency in your wallet
+ With another currency in your wallet
The following information is optional. You can erase it if you don\'t want to share it.
Tell us what functions you are missing, and we will try to help you.
Please tell us what card do you have
@@ -338,7 +350,7 @@
Available networks
My portfolio
Market
- To generate addresses for selected networks, you need to attach a Tangem card
+ To generate addresses for selected networks, you must scan your Tangem Wallet card.
Unable to load the data…
Quick actions
Result
@@ -499,7 +511,7 @@
Camera access denied
%1$s (%2$s) on %3$s network
Send only %s to this address. Sending any other currency will result in its irreversible loss.
- Show QR-code or share your address
+ Show a QR-code or share your address
Participate
Failed to load the information about the referral program. Please try again later.
Failed to load the information about the referral program. Error code: %s. Please try again later.
@@ -565,6 +577,7 @@
%1$s, %2$s
Address
Destination Tag
+ Are you sure you want to close the send screen?
Enter address
Address is the same as wallet address
Invalid Tag. It won\'t be added to the transaction.
@@ -629,7 +642,7 @@
≈ %1$s (inc. fee: %2$s)
%s will be sent
Transaction has been successfully signed and sent to the blockchain node. Wallet balance will be updated in a while
- %1$s is an asset in the Tron network. To calculate the fee and make a transaction you need to deposit some Tron(TRX) in your account.
+ %1$s is an asset in the Tron network. To calculate the fee and make a transaction you need to deposit some Tron (TRX) in your account.
Invalid address
%1$s (%2$s)
Transaction sent
@@ -661,13 +674,15 @@
The period you must wait after requesting to withdraw funds from staking before the tokens become available.
Warmup period
The allocated time for activating participation in staking.
+ Stake %s
Native staking
Staking allow you to earn %1s. Your staking rewards arrive every ~%2s days.
Earn staking rewards
Rewards
Stake more
- Unstacked
+ Unstaked
Check unstaked to claim your assets
+ Unstaking
Validator
Store your crypto assets secure while keeping private keys contained in your card
Revolutionary Hardware Wallet
@@ -709,6 +724,7 @@
Sending funds will be available once the pending transaction(s) in network %s is complete
Selling %s is not available at the moment. Please check our updates.
Staking %s is not available at the moment. Please check our updates.
+ Choose address
Generate XPUB
Hide
You are about to hide this token from the main screen. You can add it back anytime through the manage tokens page.
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/InnerYieldBalanceState.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/InnerYieldBalanceState.kt
index dcea12e0ed..78ef0dc9dd 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/InnerYieldBalanceState.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/InnerYieldBalanceState.kt
@@ -1,6 +1,7 @@
package com.tangem.features.staking.impl.presentation.state
import com.tangem.core.ui.extensions.TextReference
+import com.tangem.domain.staking.model.stakekit.BalanceType
import com.tangem.domain.staking.model.stakekit.PendingAction
import com.tangem.domain.staking.model.stakekit.Yield
import kotlinx.collections.immutable.ImmutableList
@@ -21,7 +22,8 @@ data class BalanceGroupedState(
val items: ImmutableList,
val footer: TextReference?,
val title: TextReference,
- val type: BalanceGroupType,
+ val type: BalanceType,
+ val isClickable: Boolean,
)
data class BalanceState(
@@ -33,10 +35,4 @@ data class BalanceState(
val rawCurrencyId: String?,
val unbondingPeriod: TextReference,
val pendingActions: ImmutableList,
-)
-
-enum class BalanceGroupType {
- ACTIVE,
- UNSTAKED,
- UNKNOWN,
-}
\ No newline at end of file
+)
\ No newline at end of file
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/YieldBalancesConverter.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/YieldBalancesConverter.kt
index 739015eb13..4fb15fd144 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/YieldBalancesConverter.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/YieldBalancesConverter.kt
@@ -10,7 +10,6 @@ import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.staking.model.stakekit.*
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.features.staking.impl.R
-import com.tangem.features.staking.impl.presentation.state.BalanceGroupType
import com.tangem.features.staking.impl.presentation.state.BalanceGroupedState
import com.tangem.features.staking.impl.presentation.state.BalanceState
import com.tangem.features.staking.impl.presentation.state.InnerYieldBalanceState
@@ -59,12 +58,14 @@ internal class YieldBalancesConverter(
.groupBy { it.type.toGroup() }
.mapNotNull { item ->
val (title, footer) = getGroupTitle(item.key)
+ val isClickable = getClickableType(item.key)
title?.let {
BalanceGroupedState(
items = item.value.mapBalances().toPersistentList(),
footer = footer,
title = it,
type = item.key,
+ isClickable = isClickable,
)
}
}
@@ -111,31 +112,25 @@ internal class YieldBalancesConverter(
}
private fun BalanceType.toGroup() = when (this) {
- BalanceType.PREPARING,
- BalanceType.STAKED,
- BalanceType.AVAILABLE,
- BalanceType.LOCKED,
- -> BalanceGroupType.ACTIVE
- BalanceType.UNSTAKING,
- BalanceType.UNLOCKING,
- BalanceType.UNSTAKED,
- -> BalanceGroupType.UNSTAKED
BalanceType.REWARDS,
BalanceType.UNKNOWN,
- -> BalanceGroupType.UNKNOWN
+ -> BalanceType.UNKNOWN
+ else -> this
}
- private fun getGroupTitle(type: BalanceGroupType) = when (type) {
- BalanceGroupType.ACTIVE -> resourceReference(
- R.string.staking_active,
- ) to resourceReference(
- R.string.staking_active_footer,
- )
- BalanceGroupType.UNSTAKED -> resourceReference(
- R.string.staking_unstaked,
- ) to resourceReference(
- R.string.staking_unstaked_footer,
- )
- BalanceGroupType.UNKNOWN -> null to null
+ private fun getGroupTitle(type: BalanceType) = when (type) {
+ BalanceType.STAKED -> resourceReference(R.string.staking_active) to
+ resourceReference(R.string.staking_active_footer)
+ BalanceType.UNSTAKED -> resourceReference(R.string.staking_unstaked) to
+ resourceReference(R.string.staking_unstaked_footer)
+ BalanceType.UNSTAKING -> resourceReference(R.string.staking_unstaking) to null
+ else -> null to null
+ }
+
+ private fun getClickableType(type: BalanceType) = when (type) {
+ BalanceType.STAKED,
+ BalanceType.UNSTAKED,
+ -> true
+ else -> false
}
}
\ No newline at end of file
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt
index 2255ba2015..2a5b57532b 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt
@@ -3,6 +3,7 @@ package com.tangem.features.staking.impl.presentation.state.previewdata
import com.tangem.core.ui.components.list.RoundedListWithDividersItemData
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.stringReference
+import com.tangem.domain.staking.model.stakekit.BalanceType
import com.tangem.domain.staking.model.stakekit.Yield
import com.tangem.features.staking.impl.R
import com.tangem.features.staking.impl.presentation.state.*
@@ -68,7 +69,8 @@ internal object InitialStakingStatePreview {
BalanceGroupedState(
title = stringReference("Staked"),
footer = null,
- type = BalanceGroupType.ACTIVE,
+ type = BalanceType.STAKED,
+ isClickable = true,
items = persistentListOf(
BalanceState(
cryptoValue = "100",
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingInitialInfoContent.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingInitialInfoContent.kt
index eae933e9b6..cd1f6aaac1 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingInitialInfoContent.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingInitialInfoContent.kt
@@ -31,6 +31,7 @@ import com.tangem.core.ui.extensions.*
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.utils.BigDecimalFormatter
+import com.tangem.domain.staking.model.stakekit.BalanceType
import com.tangem.features.staking.impl.R
import com.tangem.features.staking.impl.presentation.state.*
import com.tangem.features.staking.impl.presentation.state.previewdata.InitialStakingStatePreview
@@ -210,7 +211,7 @@ private fun ActiveStakingBlock(groups: List, onClick: (Bala
) {
group.items.forEachIndexed { index, balance ->
key(balance.validator.address) {
- val caption = if (group.type == BalanceGroupType.UNSTAKED) {
+ val caption = if (group.type == BalanceType.UNSTAKING) {
combinedReference(
resourceReference(R.string.staking_details_unbonding_period),
annotatedReference {
@@ -240,13 +241,14 @@ private fun ActiveStakingBlock(groups: List, onClick: (Bala
title = group.title.takeIf { index == 0 },
subtitle = stringReference(balance.validator.name),
caption = caption,
- isGrayscaleImage = group.type == BalanceGroupType.UNSTAKED,
+ isGrayscaleImage = group.type == BalanceType.UNSTAKING,
infoTitle = balance.fiatAmount,
infoSubtitle = balance.cryptoAmount,
imageUrl = balance.validator.image.orEmpty(),
modifier = Modifier.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(),
+ enabled = group.isClickable,
onClick = { onClick(balance) },
),
)