Updated on 2026-08-14
This commit is contained in:
parent
6c41eefe0b
commit
044efe36c5
19 changed files with 540 additions and 35 deletions
|
|
@ -19,6 +19,7 @@ dependencies {
|
|||
implementation(projects.features.nft.api)
|
||||
implementation(projects.features.onboardingV2.api)
|
||||
implementation(projects.features.pushNotifications.api)
|
||||
implementation(projects.features.pushNotificationSettings.api)
|
||||
implementation(projects.features.hotWallet.api)
|
||||
implementation(projects.features.wallet.api)
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@ internal class PreviewWalletSettingsComponent : WalletSettingsComponent {
|
|||
isNotificationsEnabled = true,
|
||||
onCheckedNotificationsChanged = {},
|
||||
onNotificationsDescriptionClick = {},
|
||||
isPushNotificationSettingsEnabled = false,
|
||||
onNotificationSettingsClick = {},
|
||||
isNotificationsPermissionGranted = false,
|
||||
onAccessCodeClick = {},
|
||||
onBackupClick = {},
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ import com.tangem.feature.walletsettings.utils.ItemsBuilder
|
|||
import com.tangem.feature.walletsettings.utils.WalletCardItemDelegate
|
||||
import com.tangem.features.hotwallet.HotWalletFeatureToggles
|
||||
import com.tangem.features.pushnotifications.api.analytics.PushNotificationAnalyticEvents
|
||||
import com.tangem.features.pushnotificationsettings.PushNotificationSettingsFeatureToggles
|
||||
import com.tangem.hot.sdk.model.HotWalletId
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.collections.immutable.PersistentList
|
||||
|
|
@ -92,6 +93,7 @@ internal class WalletSettingsModel @Inject constructor(
|
|||
private val accountListSortingSaver: AccountListSortingSaver,
|
||||
private val startAssetsDiscoveryUseCase: StartAssetsDiscoveryUseCase,
|
||||
private val hotWalletFeatureToggles: HotWalletFeatureToggles,
|
||||
private val pushNotificationSettingsFeatureToggles: PushNotificationSettingsFeatureToggles,
|
||||
) : Model() {
|
||||
|
||||
val params: WalletSettingsComponent.Params = paramsContainer.require()
|
||||
|
|
@ -203,6 +205,8 @@ internal class WalletSettingsModel @Inject constructor(
|
|||
is UserWallet.Cold -> userWallet.isMultiCurrency
|
||||
is UserWallet.Hot -> true
|
||||
}
|
||||
val isPushNotificationSettingsEnabled =
|
||||
pushNotificationSettingsFeatureToggles.isPushNotificationSettingsEnabled
|
||||
return itemsBuilder.buildItems(
|
||||
userWallet = userWallet,
|
||||
cardItem = cardItem,
|
||||
|
|
@ -245,6 +249,8 @@ internal class WalletSettingsModel @Inject constructor(
|
|||
isNotificationsPermissionGranted = isNotificationsPermissionGranted,
|
||||
onCheckedNotificationsChanged = ::onCheckedNotificationsChange,
|
||||
onNotificationsDescriptionClick = ::onNotificationsDescriptionClick,
|
||||
isPushNotificationSettingsEnabled = isPushNotificationSettingsEnabled,
|
||||
onNotificationSettingsClick = ::onNotificationSettingsClick,
|
||||
onAccessCodeClick = { onAccessCodeClick(userWallet) },
|
||||
onBackupClick = ::onBackupClick,
|
||||
onCardSettingsClick = ::onCardSettingsClick,
|
||||
|
|
@ -252,6 +258,10 @@ internal class WalletSettingsModel @Inject constructor(
|
|||
)
|
||||
}
|
||||
|
||||
private fun onNotificationSettingsClick() {
|
||||
router.push(AppRoute.PushNotificationSettings(userWalletId = params.userWalletId))
|
||||
}
|
||||
|
||||
private fun forgetWallet() = modelScope.launch {
|
||||
val userWallet = getUserWalletUseCase(params.userWalletId)
|
||||
.getOrNull()
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ internal class ItemsBuilder @Inject constructor() {
|
|||
isNotificationsPermissionGranted: Boolean,
|
||||
onCheckedNotificationsChanged: (Boolean) -> Unit,
|
||||
onNotificationsDescriptionClick: () -> Unit,
|
||||
isPushNotificationSettingsEnabled: Boolean,
|
||||
onNotificationSettingsClick: () -> Unit,
|
||||
forgetWallet: () -> Unit,
|
||||
onLinkMoreCardsClick: () -> Unit,
|
||||
onReferralClick: () -> Unit,
|
||||
|
|
@ -50,20 +52,26 @@ internal class ItemsBuilder @Inject constructor() {
|
|||
isLinkMoreCardsAvailable = isLinkMoreCardsAvailable,
|
||||
isReferralAvailable = isReferralAvailable,
|
||||
isManageTokensAvailable = isManageTokensAvailable,
|
||||
isPushNotificationSettingsEnabled = isPushNotificationSettingsEnabled,
|
||||
onLinkMoreCardsClick = onLinkMoreCardsClick,
|
||||
onReferralClick = onReferralClick,
|
||||
onManageTokensClick = onManageTokensClick,
|
||||
onBackupClick = onBackupClick,
|
||||
onCardSettingsClick = onCardSettingsClick,
|
||||
onNotificationSettingsClick = onNotificationSettingsClick,
|
||||
),
|
||||
)
|
||||
.addAll(
|
||||
buildNotificationItems(
|
||||
isNotificationsPermissionGranted = isNotificationsPermissionGranted,
|
||||
isNotificationsEnabled = isNotificationsEnabled,
|
||||
onCheckedNotificationsChanged = onCheckedNotificationsChanged,
|
||||
onNotificationsDescriptionClick = onNotificationsDescriptionClick,
|
||||
),
|
||||
if (isPushNotificationSettingsEnabled) {
|
||||
emptyList()
|
||||
} else {
|
||||
buildNotificationItems(
|
||||
isNotificationsPermissionGranted = isNotificationsPermissionGranted,
|
||||
isNotificationsEnabled = isNotificationsEnabled,
|
||||
onCheckedNotificationsChanged = onCheckedNotificationsChanged,
|
||||
onNotificationsDescriptionClick = onNotificationsDescriptionClick,
|
||||
)
|
||||
},
|
||||
)
|
||||
.addAll(
|
||||
buildNFTItems(
|
||||
|
|
@ -137,11 +145,13 @@ internal class ItemsBuilder @Inject constructor() {
|
|||
isLinkMoreCardsAvailable: Boolean,
|
||||
isReferralAvailable: Boolean,
|
||||
isManageTokensAvailable: Boolean,
|
||||
isPushNotificationSettingsEnabled: Boolean,
|
||||
onLinkMoreCardsClick: () -> Unit,
|
||||
onReferralClick: () -> Unit,
|
||||
onManageTokensClick: () -> Unit,
|
||||
onBackupClick: () -> Unit,
|
||||
onCardSettingsClick: () -> Unit,
|
||||
onNotificationSettingsClick: () -> Unit,
|
||||
) = WalletSettingsItemUM.WithItems(
|
||||
id = "card",
|
||||
description = null,
|
||||
|
|
@ -207,6 +217,16 @@ internal class ItemsBuilder @Inject constructor() {
|
|||
|
||||
add(referralBlock)
|
||||
}
|
||||
|
||||
if (isPushNotificationSettingsEnabled) {
|
||||
val notificationSettingsBlock = BlockUM(
|
||||
text = resourceReference(R.string.push_notification_settings_title),
|
||||
iconRes = R.drawable.ic_push_notification_settings_24,
|
||||
onClick = onNotificationSettingsClick,
|
||||
)
|
||||
|
||||
add(notificationSettingsBlock)
|
||||
}
|
||||
}.toImmutableList(),
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue