Updated on 2026-08-14

This commit is contained in:
Tangem 2024-09-30 18:34:19 +03:00
parent 48f657e1a6
commit 6248999321
5 changed files with 19 additions and 9 deletions

View file

@ -22,6 +22,7 @@ internal class PreviewWalletSettingsComponent : WalletSettingsComponent {
userWalletName = "My Wallet",
isReferralAvailable = true,
isLinkMoreCardsAvailable = true,
isRenameWalletAvailable = false,
renameWallet = {},
forgetWallet = {},
onLinkMoreCardsClick = {},

View file

@ -20,6 +20,7 @@ internal sealed class WalletSettingsItemUM {
override val id: String,
val title: TextReference,
val text: TextReference,
val isEnabled: Boolean,
val onClick: () -> Unit,
) : WalletSettingsItemUM()
}

View file

@ -25,6 +25,7 @@ import com.tangem.domain.redux.ReduxStateHolder
import com.tangem.domain.wallets.models.UserWallet
import com.tangem.domain.wallets.usecase.DeleteWalletUseCase
import com.tangem.domain.wallets.usecase.GetUserWalletUseCase
import com.tangem.domain.wallets.usecase.ShouldSaveUserWalletsSyncUseCase
import com.tangem.feature.walletsettings.analytics.Settings
import com.tangem.feature.walletsettings.component.WalletSettingsComponent
import com.tangem.feature.walletsettings.entity.DialogConfig
@ -53,6 +54,7 @@ internal class WalletSettingsModel @Inject constructor(
private val analyticsEventHandler: AnalyticsEventHandler,
private val analyticsContextProxy: AnalyticsContextProxy,
private val reduxStateHolder: ReduxStateHolder,
private val getShouldSaveUserWalletsSyncUseCase: ShouldSaveUserWalletsSyncUseCase,
) : Model() {
val params: WalletSettingsComponent.Params = paramsContainer.require()
@ -70,9 +72,9 @@ internal class WalletSettingsModel @Inject constructor(
.distinctUntilChanged()
.onEach { maybeWallet ->
val wallet = maybeWallet.getOrNull() ?: return@onEach
val isRenameWalletAvailable = getShouldSaveUserWalletsSyncUseCase()
state.update { value ->
value.copy(items = buildItems(wallet, dialogNavigation))
value.copy(items = buildItems(wallet, dialogNavigation, isRenameWalletAvailable))
}
}
.launchIn(modelScope)
@ -81,12 +83,14 @@ internal class WalletSettingsModel @Inject constructor(
private fun buildItems(
userWallet: UserWallet,
dialogNavigation: SlotNavigation<DialogConfig>,
isRenameWalletAvailable: Boolean,
): PersistentList<WalletSettingsItemUM> = itemsBuilder.buildItems(
userWalletId = userWallet.walletId,
userWalletName = userWallet.name,
isReferralAvailable = userWallet.cardTypesResolver.isTangemWallet(),
isLinkMoreCardsAvailable = userWallet.scanResponse.card.backupStatus == CardDTO.BackupStatus.NoBackup,
isManageTokensAvailable = userWallet.isMultiCurrency,
isRenameWalletAvailable = isRenameWalletAvailable,
renameWallet = { openRenameWalletDialog(userWallet, dialogNavigation) },
forgetWallet = {
messageSender.send(

View file

@ -145,6 +145,7 @@ private fun ItemsBlock(model: WalletSettingsItemUM.WithItems, modifier: Modifier
private fun TextBlock(model: WalletSettingsItemUM.WithText, modifier: Modifier = Modifier) {
BlockCard(
modifier = modifier.fillMaxWidth(),
enabled = model.isEnabled,
onClick = model.onClick,
) {
Column(

View file

@ -30,11 +30,12 @@ internal class ItemsBuilder @Inject constructor(
isLinkMoreCardsAvailable: Boolean,
isReferralAvailable: Boolean,
isManageTokensAvailable: Boolean,
isRenameWalletAvailable: Boolean,
forgetWallet: () -> Unit,
renameWallet: () -> Unit,
onLinkMoreCardsClick: () -> Unit,
): PersistentList<WalletSettingsItemUM> = persistentListOf(
buildNameItem(userWalletName, renameWallet),
buildNameItem(userWalletName, isRenameWalletAvailable, renameWallet),
buildCardItem(
userWalletId = userWalletId,
isLinkMoreCardsAvailable = isLinkMoreCardsAvailable,
@ -45,12 +46,14 @@ internal class ItemsBuilder @Inject constructor(
buildForgetItem(forgetWallet),
)
private fun buildNameItem(walletName: String, renameWallet: () -> Unit) = WalletSettingsItemUM.WithText(
id = "wallet_name",
title = resourceReference(id = R.string.settings_wallet_name_title),
text = stringReference(walletName),
onClick = renameWallet,
)
private fun buildNameItem(walletName: String, isRenameWalletAvailable: Boolean, renameWallet: () -> Unit) =
WalletSettingsItemUM.WithText(
id = "wallet_name",
title = resourceReference(id = R.string.settings_wallet_name_title),
text = stringReference(walletName),
isEnabled = isRenameWalletAvailable,
onClick = renameWallet,
)
private fun buildCardItem(
userWalletId: UserWalletId,