Updated on 2026-08-14
This commit is contained in:
parent
bd33dadcfe
commit
5a62376bfa
18 changed files with 194 additions and 163 deletions
|
|
@ -64,7 +64,6 @@ internal class PreviewWalletSettingsComponent : WalletSettingsComponent {
|
|||
onReferralClick = {},
|
||||
isManageTokensAvailable = true,
|
||||
isNotificationsEnabled = true,
|
||||
isNotificationsFeatureEnabled = true,
|
||||
onCheckedNotificationsChanged = {},
|
||||
onNotificationsDescriptionClick = {},
|
||||
isNotificationsPermissionGranted = false,
|
||||
|
|
|
|||
|
|
@ -48,11 +48,13 @@ import com.tangem.hot.sdk.model.HotWalletId
|
|||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.collections.immutable.PersistentList
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
@Suppress("LongParameterList", "LargeClass")
|
||||
@ModelScoped
|
||||
internal class WalletSettingsModel @Inject constructor(
|
||||
|
|
@ -128,11 +130,11 @@ internal class WalletSettingsModel @Inject constructor(
|
|||
}
|
||||
|
||||
fun combineUI(wallet: UserWallet) = combine(
|
||||
getWalletNFTEnabledUseCase.invoke(params.userWalletId),
|
||||
getWalletNotificationsEnabledUseCase(params.userWalletId),
|
||||
isUpgradeWalletNotificationEnabledUseCase(params.userWalletId),
|
||||
walletCardItemDelegate.cardItemFlow(wallet),
|
||||
accountItemsDelegate.loadAccount(),
|
||||
flow = getWalletNFTEnabledUseCase.invoke(params.userWalletId),
|
||||
flow2 = getWalletNotificationsEnabledUseCase(params.userWalletId),
|
||||
flow3 = isUpgradeWalletNotificationEnabledUseCase(params.userWalletId),
|
||||
flow4 = walletCardItemDelegate.cardItemFlow(wallet),
|
||||
flow5 = accountItemsDelegate.loadAccount(),
|
||||
) { nftEnabled, notificationsEnabled, isUpgradeNotificationEnabled, cardItem, accountList ->
|
||||
val isWalletBackedUp = when (wallet) {
|
||||
is UserWallet.Hot -> wallet.backedUp
|
||||
|
|
@ -145,7 +147,6 @@ internal class WalletSettingsModel @Inject constructor(
|
|||
cardItem = cardItem,
|
||||
isNFTEnabled = nftEnabled,
|
||||
isNotificationsEnabled = notificationsEnabled,
|
||||
isNotificationsFeatureEnabled = true,
|
||||
isNotificationsPermissionGranted = isNotificationsPermissionGranted(),
|
||||
isUpgradeNotificationEnabled = isUpgradeNotificationEnabled,
|
||||
accountList = accountList,
|
||||
|
|
@ -180,7 +181,6 @@ internal class WalletSettingsModel @Inject constructor(
|
|||
userWallet: UserWallet,
|
||||
cardItem: WalletSettingsItemUM.CardBlock,
|
||||
isNFTEnabled: Boolean,
|
||||
isNotificationsFeatureEnabled: Boolean,
|
||||
isNotificationsEnabled: Boolean,
|
||||
isNotificationsPermissionGranted: Boolean,
|
||||
isUpgradeNotificationEnabled: Boolean,
|
||||
|
|
@ -202,7 +202,11 @@ internal class WalletSettingsModel @Inject constructor(
|
|||
is UserWallet.Cold -> userWallet.scanResponse.card.backupStatus == CardDTO.BackupStatus.NoBackup
|
||||
is UserWallet.Hot -> false
|
||||
},
|
||||
isManageTokensAvailable = !accountsFeatureEnabled && isMultiCurrency,
|
||||
isManageTokensAvailable = if (accountsFeatureEnabled) {
|
||||
isMultiCurrency && accountList.count { it is WalletSettingsAccountsUM.Account } == 0
|
||||
} else {
|
||||
isMultiCurrency
|
||||
},
|
||||
isNFTFeatureEnabled = isMultiCurrency,
|
||||
isNFTEnabled = isNFTEnabled,
|
||||
onCheckedNFTChange = ::onCheckedNFTChange,
|
||||
|
|
@ -217,7 +221,6 @@ internal class WalletSettingsModel @Inject constructor(
|
|||
},
|
||||
onReferralClick = { onReferralClick(userWallet) },
|
||||
isNotificationsEnabled = isNotificationsEnabled,
|
||||
isNotificationsFeatureEnabled = isNotificationsFeatureEnabled,
|
||||
isNotificationsPermissionGranted = isNotificationsPermissionGranted,
|
||||
onCheckedNotificationsChanged = ::onCheckedNotificationsChange,
|
||||
onNotificationsDescriptionClick = ::onNotificationsDescriptionClick,
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import com.tangem.domain.account.models.AccountList
|
|||
import com.tangem.domain.account.models.AccountStatusList
|
||||
import com.tangem.domain.account.status.producer.SingleAccountStatusListProducer
|
||||
import com.tangem.domain.account.status.supplier.SingleAccountStatusListSupplier
|
||||
import com.tangem.domain.account.usecase.IsAccountsModeEnabledUseCase
|
||||
import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
|
||||
import com.tangem.domain.appcurrency.model.AppCurrency
|
||||
import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase
|
||||
|
|
@ -40,6 +41,7 @@ internal class AccountItemsDelegate @Inject constructor(
|
|||
private val singleAccountStatusListSupplier: SingleAccountStatusListSupplier,
|
||||
private val getBalanceHidingSettingsUseCase: GetBalanceHidingSettingsUseCase,
|
||||
private val getSelectedAppCurrencyUseCase: GetSelectedAppCurrencyUseCase,
|
||||
private val isAccountsModeEnabledUseCase: IsAccountsModeEnabledUseCase,
|
||||
private val accountsFeatureToggles: AccountsFeatureToggles,
|
||||
) {
|
||||
val userWalletId = paramsContainer.require<WalletSettingsComponent.Params>().userWalletId
|
||||
|
|
@ -51,8 +53,9 @@ internal class AccountItemsDelegate @Inject constructor(
|
|||
flow = singleAccountStatusListSupplier(params),
|
||||
flow2 = getSelectedAppCurrencyUseCase.invokeOrDefault(),
|
||||
flow3 = getBalanceHidingSettingsUseCase.isBalanceHidden(),
|
||||
) { accountStatusList, appCurrency, isBalanceHidden ->
|
||||
buildUiList(accountStatusList, appCurrency, isBalanceHidden)
|
||||
flow4 = isAccountsModeEnabledUseCase(),
|
||||
) { accountStatusList, appCurrency, isBalanceHidden, isAccountsMode ->
|
||||
buildUiList(accountStatusList, appCurrency, isBalanceHidden, isAccountsMode)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -60,6 +63,7 @@ internal class AccountItemsDelegate @Inject constructor(
|
|||
accountStatusList: AccountStatusList,
|
||||
appCurrency: AppCurrency,
|
||||
isBalanceHidden: Boolean,
|
||||
isAccountsMode: Boolean,
|
||||
): List<WalletSettingsAccountsUM> = buildList {
|
||||
fun AccountStatus.CryptoPortfolio.mapCryptoPortfolio(): WalletSettingsAccountsUM {
|
||||
val accountItemUM = AccountPortfolioItemUMConverter(
|
||||
|
|
@ -81,7 +85,9 @@ internal class AccountItemsDelegate @Inject constructor(
|
|||
text = resourceReference(R.string.common_accounts),
|
||||
).let(::add)
|
||||
|
||||
addAll(accounts.map(::mapAccount))
|
||||
if (isAccountsMode) {
|
||||
addAll(accounts.map(::mapAccount))
|
||||
}
|
||||
|
||||
val addAccountEnabled = accounts.size < AccountList.MAX_ACCOUNTS_COUNT
|
||||
val showDescription = accounts.size > 1
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ internal class ItemsBuilder @Inject constructor(
|
|||
isNFTFeatureEnabled: Boolean,
|
||||
isNFTEnabled: Boolean,
|
||||
onCheckedNFTChange: (Boolean) -> Unit,
|
||||
isNotificationsFeatureEnabled: Boolean,
|
||||
isNotificationsEnabled: Boolean,
|
||||
isNotificationsPermissionGranted: Boolean,
|
||||
onCheckedNotificationsChanged: (Boolean) -> Unit,
|
||||
|
|
@ -74,7 +73,6 @@ internal class ItemsBuilder @Inject constructor(
|
|||
)
|
||||
.addAll(
|
||||
buildNotificationItems(
|
||||
isNotificationsFeatureEnabled = isNotificationsFeatureEnabled,
|
||||
isNotificationsPermissionGranted = isNotificationsPermissionGranted,
|
||||
isNotificationsEnabled = isNotificationsEnabled,
|
||||
onCheckedNotificationsChanged = onCheckedNotificationsChanged,
|
||||
|
|
@ -103,13 +101,11 @@ internal class ItemsBuilder @Inject constructor(
|
|||
}
|
||||
|
||||
private fun buildNotificationItems(
|
||||
isNotificationsFeatureEnabled: Boolean,
|
||||
isNotificationsPermissionGranted: Boolean,
|
||||
isNotificationsEnabled: Boolean,
|
||||
onCheckedNotificationsChanged: (Boolean) -> Unit,
|
||||
onNotificationsDescriptionClick: () -> Unit,
|
||||
): List<WalletSettingsItemUM> {
|
||||
if (!isNotificationsFeatureEnabled) return emptyList()
|
||||
return buildList {
|
||||
if (!isNotificationsPermissionGranted) {
|
||||
add(buildNotificationsPermissionItem())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue