From ec9bd02e35696d07657daf8960f3ec1e3f268ba9 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 22 Jan 2025 16:01:20 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/tap/di/domain/PromoDomainModule.kt | 6 - .../local/preferences/PreferencesDataStore.kt | 6 + .../local/preferences/PreferencesKeys.kt | 6 + .../NotificationWithBackground.kt | 206 ------------------ .../notifications/OkxPromoNotification.kt | 169 -------------- .../notifications/RingPromoNotification.kt | 131 ----------- .../drawable/img_ring_promo_background.webp | Bin 84320 -> 0 bytes .../src/main/res/drawable/img_swap_promo.webp | Bin 2284 -> 0 bytes ...img_swap_promo_blue_banner_background.webp | Bin 12392 -> 0 bytes ...mg_swap_promo_green_banner_background.webp | Bin 12118 -> 0 bytes .../data/promo/DefaultPromoRepository.kt | 78 +------ .../tangem/data/promo/di/PromoDataModule.kt | 10 +- .../tangem/domain/promo/PromoRepository.kt | 12 - .../promo/ShouldShowRingPromoUseCase.kt | 13 -- .../analytics/TokenSwapPromoAnalyticsEvent.kt | 4 +- ...okenDetailsNotificationsAnalyticsSender.kt | 2 +- .../tokendetails/ui/TokenDetailsScreen.kt | 24 +- .../viewmodels/TokenDetailsViewModel.kt | 6 +- .../utils/WalletWarningsAnalyticsSender.kt | 7 +- .../domain/GetMultiWalletWarningsFactory.kt | 41 +--- .../wallet/state/model/WalletNotification.kt | 10 - .../components/common/WalletNotifications.kt | 13 +- .../intents/WalletWarningsClickIntents.kt | 20 +- 23 files changed, 42 insertions(+), 722 deletions(-) delete mode 100644 core/ui/src/main/java/com/tangem/core/ui/components/notifications/NotificationWithBackground.kt delete mode 100644 core/ui/src/main/java/com/tangem/core/ui/components/notifications/OkxPromoNotification.kt delete mode 100644 core/ui/src/main/java/com/tangem/core/ui/components/notifications/RingPromoNotification.kt delete mode 100644 core/ui/src/main/res/drawable/img_ring_promo_background.webp delete mode 100644 core/ui/src/main/res/drawable/img_swap_promo.webp delete mode 100644 core/ui/src/main/res/drawable/img_swap_promo_blue_banner_background.webp delete mode 100644 core/ui/src/main/res/drawable/img_swap_promo_green_banner_background.webp delete mode 100644 domain/promo/src/main/java/com/tangem/domain/promo/ShouldShowRingPromoUseCase.kt diff --git a/app/src/main/java/com/tangem/tap/di/domain/PromoDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/PromoDomainModule.kt index 381de50f84..af52907af8 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/PromoDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/PromoDomainModule.kt @@ -19,12 +19,6 @@ internal object PromoDomainModule { return ShouldShowSwapPromoWalletUseCase(promoSettingsRepository) } - @Provides - @Singleton - fun provideShouldShowRingPromoUseCase(promoRepository: PromoRepository): ShouldShowRingPromoUseCase { - return ShouldShowRingPromoUseCase(promoRepository) - } - @Provides @Singleton fun provideShouldShowSwapPromoTokenUseCase(promoRepository: PromoRepository): ShouldShowSwapPromoTokenUseCase { diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesDataStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesDataStore.kt index 9e326cc62c..daa20726ae 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesDataStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesDataStore.kt @@ -11,6 +11,9 @@ import androidx.datastore.preferences.core.emptyPreferences import androidx.datastore.preferences.preferencesDataStoreFile import com.tangem.datasource.local.preferences.PreferencesDataStore.INSTANCE import com.tangem.datasource.local.preferences.PreferencesKeys.APP_LOGS_KEY +import com.tangem.datasource.local.preferences.PreferencesKeys.IS_TOKEN_SWAP_PROMO_OKX_SHOW_KEY +import com.tangem.datasource.local.preferences.PreferencesKeys.IS_WALLET_SWAP_PROMO_OKX_SHOW_KEY +import com.tangem.datasource.local.preferences.PreferencesKeys.SHOULD_SHOW_RING_PROMO_KEY import com.tangem.datasource.local.preferences.utils.CleanupKeyMigration import com.tangem.datasource.local.preferences.utils.SharedPreferencesKeyMigration import kotlinx.coroutines.CoroutineScope @@ -80,6 +83,9 @@ internal object PreferencesDataStore { keyName = PreferencesKeys.BALANCE_HIDING_SETTINGS_KEY.name, ), CleanupKeyMigration(key = APP_LOGS_KEY), + CleanupKeyMigration(key = IS_WALLET_SWAP_PROMO_OKX_SHOW_KEY), + CleanupKeyMigration(key = IS_TOKEN_SWAP_PROMO_OKX_SHOW_KEY), + CleanupKeyMigration(key = SHOULD_SHOW_RING_PROMO_KEY), ) } } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt index 0a5aad5199..bcabd0214c 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt @@ -17,6 +17,9 @@ import com.tangem.datasource.local.preferences.PreferencesKeys.WAS_TWINS_ONBOARD /** * All preferences keys that DataStore is stored. * + * !!!IMPORTANT!!! + * Before DELETING active key do [CleanupKeyMigration] in [PreferencesDataStore] + * [REDACTED_AUTHOR] */ object PreferencesKeys { @@ -87,10 +90,12 @@ object PreferencesKeys { val UNSUBMITTED_TRANSACTIONS_KEY by lazy { stringPreferencesKey(name = "unsubmittedTransactions") } + @Deprecated("Remove after CleanupKeyMigration") val IS_WALLET_SWAP_PROMO_OKX_SHOW_KEY by lazy { booleanPreferencesKey(name = "isWalletSwapPromoOkxShown") } + @Deprecated("Remove after CleanupKeyMigration") val IS_TOKEN_SWAP_PROMO_OKX_SHOW_KEY by lazy { booleanPreferencesKey(name = "isTokenSwapPromoOkxShown") } @@ -99,6 +104,7 @@ object PreferencesKeys { val ADDED_WALLETS_WITH_RING_KEY by lazy { stringSetPreferencesKey(name = "addedWalletsWithRing") } + @Deprecated("Remove after CleanupKeyMigration") val SHOULD_SHOW_RING_PROMO_KEY by lazy { booleanPreferencesKey(name = "shouldShowRingPromo") } val ONRAMP_DEFAULT_COUNTRY by lazy { stringPreferencesKey(name = "onrampDefaultCountry") } diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/notifications/NotificationWithBackground.kt b/core/ui/src/main/java/com/tangem/core/ui/components/notifications/NotificationWithBackground.kt deleted file mode 100644 index 40e33e05ac..0000000000 --- a/core/ui/src/main/java/com/tangem/core/ui/components/notifications/NotificationWithBackground.kt +++ /dev/null @@ -1,206 +0,0 @@ -package com.tangem.core.ui.components.notifications - -import android.content.res.Configuration -import androidx.compose.foundation.Image -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.defaultMinSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.size -import androidx.compose.material3.ButtonColors -import androidx.compose.material3.Icon -import androidx.compose.material3.Text -import androidx.compose.material3.ripple -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import androidx.constraintlayout.compose.ConstraintLayout -import androidx.constraintlayout.compose.Dimension -import androidx.constraintlayout.compose.Visibility -import com.tangem.core.ui.R -import com.tangem.core.ui.components.buttons.common.TangemButton -import com.tangem.core.ui.components.buttons.common.TangemButtonIconPosition -import com.tangem.core.ui.extensions.resolveReference -import com.tangem.core.ui.extensions.resourceReference -import com.tangem.core.ui.extensions.stringReference -import com.tangem.core.ui.extensions.wrappedList -import com.tangem.core.ui.res.LocalIsInDarkTheme -import com.tangem.core.ui.res.TangemColorPalette.Dark6 -import com.tangem.core.ui.res.TangemColorPalette.Light4 -import com.tangem.core.ui.res.TangemTheme -import com.tangem.core.ui.res.TangemThemePreview - -/** - * Custom notification with image background - * @see [Swap Promo](https://www.figma.com/file/Vs6SkVsFnUPsSCNwlnVf5U/Android-%E2%80%93-UI?type=design&node-id=8713-6307&mode=dev) - */ -@Suppress("LongMethod", "DestructuringDeclarationWithTooManyEntries") -@Composable -fun NotificationWithBackground(config: NotificationConfig, modifier: Modifier = Modifier) { - val button = config.buttonsState as? NotificationConfig.ButtonsState.SecondaryButtonConfig - - ConstraintLayout( - modifier = modifier - .defaultMinSize(minHeight = TangemTheme.dimens.size62) - .fillMaxWidth() - .clip(TangemTheme.shapes.roundedCornersXMedium) - .clickable( - enabled = config.onClick != null, - onClick = config.onClick ?: {}, - ), - ) { - val (iconRef, titleRef, subtitleRef, closeIconRef, buttonRef, backgroundRef) = createRefs() - - val spacing2 = TangemTheme.dimens.spacing2 - val spacing12 = TangemTheme.dimens.spacing12 - val spacing14 = TangemTheme.dimens.spacing14 - - Image( - painter = painterResource(config.backgroundResId ?: R.drawable.img_swap_promo_blue_banner_background), - contentDescription = null, - contentScale = ContentScale.Crop, - modifier = Modifier.constrainAs(backgroundRef) { - top.linkTo(parent.top) - start.linkTo(parent.start) - end.linkTo(parent.end) - bottom.linkTo(parent.bottom) - width = Dimension.fillToConstraints - height = Dimension.fillToConstraints - visibility = if (config.backgroundResId == null) Visibility.Gone else Visibility.Visible - }, - ) - Image( - painter = painterResource(config.iconResId), - contentDescription = null, - modifier = Modifier - .size(TangemTheme.dimens.size34) - .constrainAs(iconRef) { - start.linkTo(parent.start, spacing12) - linkTo(titleRef.top, subtitleRef.bottom, bias = 0.1f) - }, - ) - - val titleText = config.title?.resolveReference() - if (titleText != null) { - Text( - text = titleText, - style = TangemTheme.typography.button, - color = TangemTheme.colors.text.constantWhite, - modifier = Modifier.constrainAs(titleRef) { - top.linkTo(parent.top, spacing12) - start.linkTo(iconRef.end, spacing12) - end.linkTo(closeIconRef.start, spacing2) - width = Dimension.fillToConstraints - }, - ) - } - - Text( - text = config.subtitle.resolveReference(), - style = TangemTheme.typography.caption2, - color = TangemTheme.colors.text.constantWhite, - modifier = Modifier.constrainAs(subtitleRef) { - top.linkTo(titleRef.bottom, spacing2) - start.linkTo(iconRef.end, spacing12) - end.linkTo(parent.end, spacing12) - bottom.linkTo(buttonRef.top, spacing12, spacing14) - width = Dimension.fillToConstraints - }, - ) - Icon( - painter = painterResource(id = R.drawable.ic_close_24), - contentDescription = null, - tint = TangemTheme.colors.text.constantWhite, - modifier = Modifier - .size(TangemTheme.dimens.size16) - .constrainAs(closeIconRef) { - top.linkTo(parent.top, spacing12) - end.linkTo(parent.end, spacing12) - } - .clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = ripple(bounded = false), - ) { - config.onCloseClick?.invoke() - }, - ) - val isDarkMode = LocalIsInDarkTheme.current - TangemButton( - modifier = Modifier.constrainAs(buttonRef) { - start.linkTo(parent.start, spacing12) - end.linkTo(parent.end, spacing12) - bottom.linkTo(parent.bottom, spacing12) - width = Dimension.fillToConstraints - visibility = if (button == null) { - Visibility.Gone - } else { - Visibility.Visible - } - }, - text = button?.text?.resolveReference().orEmpty(), - icon = TangemButtonIconPosition.Start(button?.iconResId ?: R.drawable.ic_exchange_vertical_24), - onClick = button?.onClick ?: {}, - colors = ButtonColors( - containerColor = if (isDarkMode) Light4 else TangemTheme.colors.button.secondary, - contentColor = Dark6, - disabledContainerColor = TangemTheme.colors.button.disabled, - disabledContentColor = TangemTheme.colors.text.disabled, - ), - textStyle = TangemTheme.typography.subtitle1, - enabled = true, - showProgress = false, - ) - } -} - -//region preview -@Preview -@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -private fun NotificationWithBackgroundPreview( - @PreviewParameter(NotificationWithBackgroundPreviewProvider::class) config: NotificationConfig, -) { - TangemThemePreview { - NotificationWithBackground(config = config) - } -} - -private class NotificationWithBackgroundPreviewProvider : PreviewParameterProvider { - override val values: Sequence - get() = sequenceOf( - NotificationConfig( - title = resourceReference(id = R.string.main_swap_changelly_promotion_title), - subtitle = resourceReference( - id = R.string.main_swap_changelly_promotion_message, - formatArgs = wrappedList("1", "2", "3"), - ), - iconResId = R.drawable.img_swap_promo, - backgroundResId = R.drawable.img_swap_promo_blue_banner_background, - ), - NotificationConfig( - title = resourceReference( - id = R.string.token_swap_changelly_promotion_title, - formatArgs = wrappedList("1"), - ), - subtitle = stringReference( - "Swap multiple currencies between any chains you wish. Swap multiple " + - "currencies between any chains you wish. Swap multiple " + - "currencies between any chains you wish. Commission free period " + - "till Dec 31.", - ), - iconResId = R.drawable.img_swap_promo, - backgroundResId = R.drawable.img_swap_promo_blue_banner_background, - buttonsState = NotificationConfig.ButtonsState.SecondaryButtonConfig( - text = resourceReference(id = R.string.token_swap_promotion_button), - onClick = {}, - ), - ), - ) -} -//endregion \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/notifications/OkxPromoNotification.kt b/core/ui/src/main/java/com/tangem/core/ui/components/notifications/OkxPromoNotification.kt deleted file mode 100644 index beadc7ce9e..0000000000 --- a/core/ui/src/main/java/com/tangem/core/ui/components/notifications/OkxPromoNotification.kt +++ /dev/null @@ -1,169 +0,0 @@ -package com.tangem.core.ui.components.notifications - -import android.content.res.Configuration -import androidx.compose.foundation.background -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.* -import androidx.compose.material3.ButtonColors -import androidx.compose.material3.Icon -import androidx.compose.material3.Text -import androidx.compose.material3.ripple -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.graphics.vector.rememberVectorPainter -import androidx.compose.ui.res.vectorResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import com.tangem.core.ui.R -import com.tangem.core.ui.components.buttons.common.TangemButton -import com.tangem.core.ui.components.buttons.common.TangemButtonIconPosition -import com.tangem.core.ui.extensions.resolveReference -import com.tangem.core.ui.extensions.resourceReference -import com.tangem.core.ui.res.LocalIsInDarkTheme -import com.tangem.core.ui.res.TangemColorPalette.Dark6 -import com.tangem.core.ui.res.TangemColorPalette.Light4 -import com.tangem.core.ui.res.TangemTheme -import com.tangem.core.ui.res.TangemThemePreview - -private val OxkPromoColor = Color(0xFFBCFF2F) - -@Composable -fun OkxPromoNotification(config: NotificationConfig, modifier: Modifier = Modifier) { - Column( - modifier - .clip(TangemTheme.shapes.roundedCornersXMedium) - .background(Dark6), - ) { - Content(config = config) - Button(config = config) - } -} - -@Composable -private fun Content(config: NotificationConfig) { - Row { - Icon( - painter = rememberVectorPainter(image = ImageVector.vectorResource(id = R.drawable.img_okx_dex_logo)), - contentDescription = null, - tint = TangemTheme.colors.icon.constant, - modifier = Modifier - .padding(start = TangemTheme.dimens.spacing12) - .align(Alignment.CenterVertically), - ) - Column( - verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing2), - modifier = Modifier - .weight(1f) - .padding(TangemTheme.dimens.spacing12), - ) { - val titleText = config.title?.resolveReference() - - if (titleText != null) { - Text( - text = titleText, - style = TangemTheme.typography.button, - color = OxkPromoColor, - ) - } - - Text( - text = config.subtitle.resolveReference(), - style = TangemTheme.typography.caption2, - color = TangemTheme.colors.text.constantWhite, - ) - } - config.onCloseClick?.let { - Icon( - painter = rememberVectorPainter( - image = ImageVector.vectorResource(R.drawable.ic_close_24), - ), - contentDescription = null, - tint = TangemTheme.colors.icon.constant, - modifier = - Modifier - .padding( - top = TangemTheme.dimens.spacing8, - end = TangemTheme.dimens.spacing8, - ) - .size(TangemTheme.dimens.size20) - .clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = ripple(radius = TangemTheme.dimens.radius10), - onClick = it, - ), - ) - } - } -} - -@Composable -private fun Button(config: NotificationConfig) { - val button = config.buttonsState as? NotificationConfig.ButtonsState.SecondaryButtonConfig - - button?.let { - val isDarkMode = LocalIsInDarkTheme.current - TangemButton( - modifier = Modifier - .fillMaxWidth() - .padding( - start = TangemTheme.dimens.spacing12, - end = TangemTheme.dimens.spacing12, - bottom = TangemTheme.dimens.spacing12, - ), - text = button.text.resolveReference(), - icon = TangemButtonIconPosition.Start(button.iconResId ?: R.drawable.ic_exchange_vertical_24), - onClick = button.onClick, - colors = ButtonColors( - containerColor = if (isDarkMode) Light4 else TangemTheme.colors.button.secondary, - contentColor = Dark6, - disabledContainerColor = TangemTheme.colors.button.disabled, - disabledContentColor = TangemTheme.colors.text.disabled, - ), - textStyle = TangemTheme.typography.subtitle1, - enabled = true, - showProgress = false, - ) - } -} - -// region Preview -@Preview(widthDp = 360) -@Preview(widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -private fun OkxPromoNotification_Preview( - @PreviewParameter(OkxPromoNotificationPreviewProvider::class) data: NotificationConfig, -) { - TangemThemePreview { - OkxPromoNotification(data) - } -} - -private class OkxPromoNotificationPreviewProvider : PreviewParameterProvider { - override val values: Sequence - get() = sequenceOf( - NotificationConfig( - title = resourceReference(R.string.swap_promo_title), - subtitle = resourceReference(R.string.swap_promo_text), - iconResId = R.drawable.img_okx_dex_logo, - onCloseClick = {}, - ), - NotificationConfig( - title = resourceReference(R.string.swap_promo_title), - subtitle = resourceReference(R.string.swap_promo_text), - iconResId = R.drawable.img_okx_dex_logo, - onCloseClick = {}, - buttonsState = NotificationConfig.ButtonsState.SecondaryButtonConfig( - text = resourceReference(R.string.token_swap_promotion_button), - onClick = {}, - ), - ), - ) -} -// endregion \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/notifications/RingPromoNotification.kt b/core/ui/src/main/java/com/tangem/core/ui/components/notifications/RingPromoNotification.kt deleted file mode 100644 index c40947749d..0000000000 --- a/core/ui/src/main/java/com/tangem/core/ui/components/notifications/RingPromoNotification.kt +++ /dev/null @@ -1,131 +0,0 @@ -package com.tangem.core.ui.components.notifications - -import android.content.res.Configuration -import androidx.annotation.DrawableRes -import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.layout.FixedScale -import androidx.compose.ui.layout.onSizeChanged -import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp -import androidx.constraintlayout.compose.ConstraintLayout -import com.tangem.core.ui.R -import com.tangem.core.ui.extensions.TextReference -import com.tangem.core.ui.extensions.resourceReference -import com.tangem.core.ui.res.TangemColorPalette -import com.tangem.core.ui.res.TangemTheme -import com.tangem.core.ui.res.TangemThemePreview - -@Composable -fun RingPromoNotification(config: NotificationConfig, modifier: Modifier = Modifier) { - var textHeightDp by remember { mutableStateOf(0.dp) } - - Box( - modifier = modifier - .fillMaxWidth() - .clip(shape = TangemTheme.shapes.roundedCornersXMedium) - .background(TangemColorPalette.Dark6), - ) { - PromoImage( - backgroundRes = config.backgroundResId, - iconRes = config.iconResId, - modifier = Modifier.height(textHeightDp), - ) - PromoText( - title = config.title, - subtitle = config.subtitle, - onSizeChange = { textHeightDp = it }, - ) - CloseableIconButton( - onClick = config.onCloseClick, - modifier = Modifier.align(alignment = Alignment.TopEnd), - iconTint = TangemTheme.colors.icon.informative, - ) - } -} - -@Composable -private fun PromoImage(@DrawableRes backgroundRes: Int?, @DrawableRes iconRes: Int, modifier: Modifier = Modifier) { - if (backgroundRes == null) return - ConstraintLayout( - modifier = modifier, - ) { - val (background, image) = createRefs() - - Image( - painter = painterResource(backgroundRes), - contentDescription = null, - contentScale = FixedScale(2f), - modifier = Modifier - .constrainAs(background) { - top.linkTo(parent.top) - start.linkTo(image.start) - end.linkTo(image.end) - }, - ) - Image( - painter = painterResource(id = iconRes), - contentDescription = null, - contentScale = ContentScale.FillWidth, - modifier = Modifier - .requiredWidth(width = 60.dp) - .wrapContentHeight(Alignment.Top, unbounded = true) - .constrainAs(image) { - top.linkTo(parent.top, 11.dp) - start.linkTo(parent.start, 9.dp) - }, - ) - } -} - -@Composable -private fun PromoText(title: TextReference?, subtitle: TextReference, onSizeChange: (Dp) -> Unit) { - val density = LocalDensity.current - - Box( - modifier = Modifier.onSizeChanged { - with(density) { onSizeChange(it.height.toDp()) } - }, - ) { - TextsBlock( - title = title, - subtitle = subtitle, - subtitleColor = TangemTheme.colors.text.tertiary, - titleColor = TangemTheme.colors.text.constantWhite, - modifier = Modifier - .wrapContentHeight() - .align(Alignment.CenterStart) - .padding(start = 80.dp, top = 12.dp, end = 12.dp, bottom = 12.dp), - ) - } -} - -// region Preview -@Preview(showBackground = true, widthDp = 360) -@Preview(showBackground = true, widthDp = 360, locale = "fr") -@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -private fun RingPromoNotification_Preview() { - TangemThemePreview { - RingPromoNotification( - NotificationConfig( - title = resourceReference(id = R.string.ring_promo_title), - subtitle = resourceReference(id = R.string.ring_promo_text), - iconResId = R.drawable.img_card_with_ring, - backgroundResId = R.drawable.img_ring_promo_background, - onCloseClick = { }, - ), - ) - } -} - -// endregion \ No newline at end of file diff --git a/core/ui/src/main/res/drawable/img_ring_promo_background.webp b/core/ui/src/main/res/drawable/img_ring_promo_background.webp deleted file mode 100644 index aa5ae8be39ee7a636b2620a558b2fffacd2f39d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84320 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 Z*e;_)pz6qSe5LFduL2cHmK6Z-e*iH`Ae{gJ diff --git a/core/ui/src/main/res/drawable/img_swap_promo_green_banner_background.webp b/core/ui/src/main/res/drawable/img_swap_promo_green_banner_background.webp deleted file mode 100644 index ffaced2ad24053b210b26e771c88376f428826da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12118 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 MDW{!NqL?560Qs9?9RL6T diff --git a/data/promo/src/main/java/com/tangem/data/promo/DefaultPromoRepository.kt b/data/promo/src/main/java/com/tangem/data/promo/DefaultPromoRepository.kt index 6a0307943f..c481880b51 100644 --- a/data/promo/src/main/java/com/tangem/data/promo/DefaultPromoRepository.kt +++ b/data/promo/src/main/java/com/tangem/data/promo/DefaultPromoRepository.kt @@ -1,94 +1,32 @@ package com.tangem.data.promo -import com.tangem.data.promo.converters.PromoResponseConverter -import com.tangem.datasource.api.common.response.getOrThrow -import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.local.preferences.AppPreferencesStore -import com.tangem.datasource.local.preferences.PreferencesKeys.ADDED_WALLETS_WITH_RING_KEY -import com.tangem.datasource.local.preferences.PreferencesKeys.IS_TOKEN_SWAP_PROMO_OKX_SHOW_KEY -import com.tangem.datasource.local.preferences.PreferencesKeys.IS_WALLET_SWAP_PROMO_OKX_SHOW_KEY -import com.tangem.datasource.local.preferences.PreferencesKeys.SHOULD_SHOW_RING_PROMO_KEY import com.tangem.datasource.local.preferences.PreferencesKeys.SHOULD_SHOW_SWAP_STORIES_KEY import com.tangem.datasource.local.preferences.utils.get import com.tangem.datasource.local.preferences.utils.getSyncOrDefault import com.tangem.datasource.local.preferences.utils.store import com.tangem.domain.promo.PromoRepository -import com.tangem.domain.promo.models.PromoBanner -import com.tangem.domain.wallets.models.UserWalletId -import com.tangem.utils.coroutines.CoroutineDispatcherProvider -import com.tangem.utils.coroutines.runCatching import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.flowOf internal class DefaultPromoRepository( - private val tangemApi: TangemTechApi, private val appPreferencesStore: AppPreferencesStore, - private val dispatchers: CoroutineDispatcherProvider, ) : PromoRepository { - private val promoResponseConverter = PromoResponseConverter() - override suspend fun getChangellyPromoBanner(): PromoBanner? { - return runCatching(dispatchers.io) { - promoResponseConverter.convert( - tangemApi.getPromotionInfo(CHANGELLY_NAME) - .getOrThrow(), - ) - }.getOrNull() - } - - override suspend fun getOkxPromoBanner(): PromoBanner? { - return runCatching(dispatchers.io) { - promoResponseConverter.convert( - tangemApi.getPromotionInfo(OKX) - .getOrThrow(), - ) - }.getOrNull() - } - - override suspend fun getRingPromoBanner(): PromoBanner? { - return runCatching(dispatchers.io) { - promoResponseConverter.convert( - tangemApi.getPromotionInfo(RING) - .getOrThrow(), - ) - }.getOrNull() - } - override fun isReadyToShowWalletSwapPromo(): Flow { - return appPreferencesStore.get(IS_WALLET_SWAP_PROMO_OKX_SHOW_KEY, true) + return flowOf(false) // Use it on new promo action } override fun isReadyToShowTokenSwapPromo(): Flow { - return appPreferencesStore.get(IS_TOKEN_SWAP_PROMO_OKX_SHOW_KEY, true) + return flowOf(false) // Use it on new promo action } override suspend fun setNeverToShowWalletSwapPromo() { - appPreferencesStore.store( - key = IS_WALLET_SWAP_PROMO_OKX_SHOW_KEY, - value = false, - ) + // Use it on new promo action } override suspend fun setNeverToShowTokenSwapPromo() { - appPreferencesStore.store( - key = IS_TOKEN_SWAP_PROMO_OKX_SHOW_KEY, - value = false, - ) - } - - override fun isReadyToShowRingPromo(userWalletId: UserWalletId): Flow { - return combine( - flow = appPreferencesStore - .get(key = ADDED_WALLETS_WITH_RING_KEY, default = emptySet()) - .map { userWalletId.stringValue in it }, - flow2 = appPreferencesStore.get(key = SHOULD_SHOW_RING_PROMO_KEY, default = true), - transform = { isRingAdded, shouldShowRingPromo -> isRingAdded && shouldShowRingPromo }, - ) - } - - override suspend fun setNeverToShowRingPromo() { - appPreferencesStore.store(key = SHOULD_SHOW_RING_PROMO_KEY, value = false) + // Use it on new promo action } override fun isReadyToShowSwapStories(): Flow { @@ -105,10 +43,4 @@ internal class DefaultPromoRepository( value = false, ) } - - private companion object { - private const val CHANGELLY_NAME = "changelly" - private const val OKX = "okx" - private const val RING = "ring" - } } \ No newline at end of file diff --git a/data/promo/src/main/java/com/tangem/data/promo/di/PromoDataModule.kt b/data/promo/src/main/java/com/tangem/data/promo/di/PromoDataModule.kt index 102afaa289..40499944ec 100644 --- a/data/promo/src/main/java/com/tangem/data/promo/di/PromoDataModule.kt +++ b/data/promo/src/main/java/com/tangem/data/promo/di/PromoDataModule.kt @@ -1,10 +1,8 @@ package com.tangem.data.promo.di import com.tangem.data.promo.DefaultPromoRepository -import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.domain.promo.PromoRepository -import com.tangem.utils.coroutines.CoroutineDispatcherProvider import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -17,11 +15,7 @@ internal object PromoDataModule { @Provides @Singleton - fun providePromoRepository( - tangemTechApi: TangemTechApi, - appPreferencesStore: AppPreferencesStore, - dispatchers: CoroutineDispatcherProvider, - ): PromoRepository { - return DefaultPromoRepository(tangemTechApi, appPreferencesStore, dispatchers) + fun providePromoRepository(appPreferencesStore: AppPreferencesStore): PromoRepository { + return DefaultPromoRepository(appPreferencesStore) } } \ No newline at end of file diff --git a/domain/promo/src/main/java/com/tangem/domain/promo/PromoRepository.kt b/domain/promo/src/main/java/com/tangem/domain/promo/PromoRepository.kt index de2c366987..cc66ada854 100644 --- a/domain/promo/src/main/java/com/tangem/domain/promo/PromoRepository.kt +++ b/domain/promo/src/main/java/com/tangem/domain/promo/PromoRepository.kt @@ -1,17 +1,9 @@ package com.tangem.domain.promo -import com.tangem.domain.promo.models.PromoBanner -import com.tangem.domain.wallets.models.UserWalletId import kotlinx.coroutines.flow.Flow interface PromoRepository { - suspend fun getChangellyPromoBanner(): PromoBanner? - - suspend fun getOkxPromoBanner(): PromoBanner? - - suspend fun getRingPromoBanner(): PromoBanner? - fun isReadyToShowWalletSwapPromo(): Flow fun isReadyToShowTokenSwapPromo(): Flow @@ -20,10 +12,6 @@ interface PromoRepository { suspend fun setNeverToShowTokenSwapPromo() - fun isReadyToShowRingPromo(userWalletId: UserWalletId): Flow - - suspend fun setNeverToShowRingPromo() - fun isReadyToShowSwapStories(): Flow suspend fun isReadyToShowSwapStoriesSync(): Boolean diff --git a/domain/promo/src/main/java/com/tangem/domain/promo/ShouldShowRingPromoUseCase.kt b/domain/promo/src/main/java/com/tangem/domain/promo/ShouldShowRingPromoUseCase.kt deleted file mode 100644 index 78ad8931ef..0000000000 --- a/domain/promo/src/main/java/com/tangem/domain/promo/ShouldShowRingPromoUseCase.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.tangem.domain.promo - -import com.tangem.domain.wallets.models.UserWalletId -import kotlinx.coroutines.flow.Flow - -class ShouldShowRingPromoUseCase(private val promoRepository: PromoRepository) { - - operator fun invoke(userWalletId: UserWalletId): Flow { - return promoRepository.isReadyToShowRingPromo(userWalletId) - } - - suspend fun neverToShow() = promoRepository.setNeverToShowRingPromo() -} \ No newline at end of file diff --git a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenSwapPromoAnalyticsEvent.kt b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenSwapPromoAnalyticsEvent.kt index 70f2a8632b..7ed6c36cc2 100644 --- a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenSwapPromoAnalyticsEvent.kt +++ b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/analytics/TokenSwapPromoAnalyticsEvent.kt @@ -36,8 +36,8 @@ sealed class TokenSwapPromoAnalyticsEvent( } } + // Use it on new promo action enum class ProgramName { - OKX, - Ring, + Empty, } } \ No newline at end of file diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/analytics/TokenDetailsNotificationsAnalyticsSender.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/analytics/TokenDetailsNotificationsAnalyticsSender.kt index 8e3ed14b1c..365f441978 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/analytics/TokenDetailsNotificationsAnalyticsSender.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/analytics/TokenDetailsNotificationsAnalyticsSender.kt @@ -38,7 +38,7 @@ internal class TokenDetailsNotificationsAnalyticsSender( currency = cryptoCurrency, ) is TokenDetailsNotification.SwapPromo -> TokenSwapPromoAnalyticsEvent.NoticePromotionBanner( - programName = TokenSwapPromoAnalyticsEvent.ProgramName.OKX, + programName = TokenSwapPromoAnalyticsEvent.ProgramName.Empty, // Use it on new promo action source = AnalyticsParam.ScreensSources.Token, ) is TokenDetailsNotification.KaspaIncompleteTransactionWarning -> TokenDetailsAnalyticsEvent.Notice.Reveal( diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/TokenDetailsScreen.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/TokenDetailsScreen.kt index f353f68068..f60d8ad078 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/TokenDetailsScreen.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/TokenDetailsScreen.kt @@ -23,7 +23,6 @@ import com.tangem.core.ui.components.bottomsheets.tokenreceive.TokenReceiveBotto import com.tangem.core.ui.components.marketprice.MarketPriceBlock import com.tangem.core.ui.components.marketprice.MarketPriceBlockState import com.tangem.core.ui.components.notifications.Notification -import com.tangem.core.ui.components.notifications.OkxPromoNotification import com.tangem.core.ui.components.transactions.state.TxHistoryState import com.tangem.core.ui.components.transactions.txHistoryItems import com.tangem.core.ui.components.containers.pullToRefresh.TangemPullToRefreshContainer @@ -92,21 +91,14 @@ internal fun TokenDetailsScreen(state: TokenDetailsState, tokenMarketBlockCompon key = { it::class.java }, contentType = { it.config::class.java }, itemContent = { - if (it is TokenDetailsNotification.SwapPromo) { - OkxPromoNotification( - config = it.config, - modifier = itemModifier.animateItem(), - ) - } else { - Notification( - modifier = itemModifier.animateItem(), - config = it.config, - iconTint = when (it) { - is TokenDetailsNotification.Informational -> TangemTheme.colors.icon.accent - else -> null - }, - ) - } + Notification( + modifier = itemModifier.animateItem(), + config = it.config, + iconTint = when (it) { + is TokenDetailsNotification.Informational -> TangemTheme.colors.icon.accent + else -> null + }, + ) }, ) diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt index d3ffbeb33b..cb86b9d766 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt @@ -36,7 +36,6 @@ import com.tangem.domain.card.NetworkHasDerivationUseCase import com.tangem.domain.common.util.cardTypesResolver import com.tangem.domain.demo.IsDemoCardUseCase import com.tangem.domain.onramp.model.OnrampSource -import com.tangem.domain.promo.ShouldShowSwapPromoTokenUseCase import com.tangem.domain.redux.ReduxStateHolder import com.tangem.domain.staking.GetStakingAvailabilityUseCase import com.tangem.domain.staking.GetStakingEntryInfoUseCase @@ -74,6 +73,7 @@ import com.tangem.feature.tokendetails.presentation.tokendetails.state.TokenBala import com.tangem.feature.tokendetails.presentation.tokendetails.state.TokenDetailsState import com.tangem.feature.tokendetails.presentation.tokendetails.state.factory.TokenDetailsStateFactory import com.tangem.feature.tokendetails.presentation.tokendetails.state.factory.express.ExpressStatusFactory +import com.tangem.domain.promo.ShouldShowSwapPromoTokenUseCase import com.tangem.features.onramp.OnrampFeatureToggles import com.tangem.features.tokendetails.impl.R import com.tangem.utils.Provider @@ -807,7 +807,7 @@ internal class TokenDetailsViewModel @Inject constructor( analyticsEventsHandler.send( TokenSwapPromoAnalyticsEvent.PromotionBannerClicked( source = AnalyticsParam.ScreensSources.Token, - programName = TokenSwapPromoAnalyticsEvent.ProgramName.OKX, + programName = TokenSwapPromoAnalyticsEvent.ProgramName.Empty, // Use it on new promo action action = TokenSwapPromoAnalyticsEvent.PromotionBannerClicked.BannerAction.Closed, ), ) @@ -820,7 +820,7 @@ internal class TokenDetailsViewModel @Inject constructor( analyticsEventsHandler.send( TokenSwapPromoAnalyticsEvent.PromotionBannerClicked( source = AnalyticsParam.ScreensSources.Token, - programName = TokenSwapPromoAnalyticsEvent.ProgramName.OKX, + programName = TokenSwapPromoAnalyticsEvent.ProgramName.Empty, // Use it on new promo action action = TokenSwapPromoAnalyticsEvent.PromotionBannerClicked.BannerAction.Clicked, ), ) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletWarningsAnalyticsSender.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletWarningsAnalyticsSender.kt index cbe0c57c5f..6313ea4653 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletWarningsAnalyticsSender.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/analytics/utils/WalletWarningsAnalyticsSender.kt @@ -4,6 +4,7 @@ import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.analytics.models.AnalyticsEvent import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.domain.tokens.model.analytics.TokenSwapPromoAnalyticsEvent +import com.tangem.domain.tokens.model.analytics.TokenSwapPromoAnalyticsEvent.ProgramName import com.tangem.feature.wallet.presentation.wallet.analytics.WalletScreenAnalyticsEvent.MainScreen import com.tangem.feature.wallet.presentation.wallet.state.model.WalletNotification import com.tangem.feature.wallet.presentation.wallet.state.model.WalletState @@ -50,7 +51,7 @@ internal class WalletWarningsAnalyticsSender @Inject constructor( is WalletNotification.NoteMigration -> MainScreen.NotePromo is WalletNotification.SwapPromo -> TokenSwapPromoAnalyticsEvent.NoticePromotionBanner( source = AnalyticsParam.ScreensSources.Main, - programName = TokenSwapPromoAnalyticsEvent.ProgramName.OKX, + programName = TokenSwapPromoAnalyticsEvent.ProgramName.Empty, // Use it on new promo action ) is WalletNotification.UnlockWallets -> null // See [SelectedWalletAnalyticsSender] is WalletNotification.Informational.NoAccount, @@ -58,10 +59,6 @@ internal class WalletWarningsAnalyticsSender @Inject constructor( is WalletNotification.Warning.SomeNetworksUnreachable, is WalletNotification.Warning.NetworksUnreachable, -> null - is WalletNotification.RingPromo -> TokenSwapPromoAnalyticsEvent.NoticePromotionBanner( - source = AnalyticsParam.ScreensSources.Main, - programName = TokenSwapPromoAnalyticsEvent.ProgramName.Ring, - ) is WalletNotification.Critical.SeedPhraseNotification -> MainScreen.NoticeSeedPhraseSupport } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt index b852180742..d863a3dea9 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt @@ -4,9 +4,6 @@ import com.tangem.domain.common.CardTypesResolver import com.tangem.domain.common.util.cardTypesResolver import com.tangem.domain.core.lce.Lce import com.tangem.domain.demo.IsDemoCardUseCase -import com.tangem.domain.promo.PromoRepository -import com.tangem.domain.promo.ShouldShowRingPromoUseCase -import com.tangem.domain.promo.models.PromoBanner import com.tangem.domain.settings.IsReadyToShowRateAppUseCase import com.tangem.domain.tokens.error.TokenListError import com.tangem.domain.tokens.model.CryptoCurrency @@ -22,7 +19,6 @@ import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.flow.flow import javax.inject.Inject import kotlin.collections.count @@ -32,8 +28,6 @@ internal class GetMultiWalletWarningsFactory @Inject constructor( private val tokenListStore: MultiWalletTokenListStore, private val isDemoCardUseCase: IsDemoCardUseCase, private val isReadyToShowRateAppUseCase: IsReadyToShowRateAppUseCase, - private val shouldShowRingPromoUseCase: ShouldShowRingPromoUseCase, - private val promoRepository: PromoRepository, private val isNeedToBackupUseCase: IsNeedToBackupUseCase, private val backupValidator: BackupValidator, private val seedPhraseNotificationUseCase: SeedPhraseNotificationUseCase, @@ -43,25 +37,13 @@ internal class GetMultiWalletWarningsFactory @Inject constructor( fun create(userWallet: UserWallet, clickIntents: WalletClickIntents): Flow> { val cardTypesResolver = userWallet.scanResponse.cardTypesResolver - val promoFlow = flow { emit(promoRepository.getRingPromoBanner()) } return combine( - tokenListStore.getOrThrow(userWallet.walletId), - isReadyToShowRateAppUseCase(), - isNeedToBackupUseCase(userWallet.walletId), - shouldShowRingPromoUseCase(userWalletId = userWallet.walletId), - promoFlow, - seedPhraseNotificationUseCase(userWalletId = userWallet.walletId), - ) { - val maybeTokenList = it[0] as Lce - val isReadyToShowRating = it[1] as Boolean - val isNeedToBackup = it[2] as Boolean - val shouldShowPromo = it[3] as Boolean - val promoBanner = it[4] as? PromoBanner - val seedPhraseIssueStatus = it[5] as Boolean - + flow = tokenListStore.getOrThrow(userWallet.walletId), + flow2 = isReadyToShowRateAppUseCase(), + flow3 = isNeedToBackupUseCase(userWallet.walletId), + flow4 = seedPhraseNotificationUseCase(userWalletId = userWallet.walletId), + ) { maybeTokenList, isReadyToShowRating, isNeedToBackup, seedPhraseIssueStatus -> buildList { - addRingPromoNotification(shouldShowPromo, promoBanner, clickIntents) - addCriticalNotifications(userWallet, seedPhraseIssueStatus, clickIntents) addInformationalNotifications(cardTypesResolver, maybeTokenList, clickIntents) @@ -79,19 +61,6 @@ internal class GetMultiWalletWarningsFactory @Inject constructor( } } - private fun MutableList.addRingPromoNotification( - shouldShowPromo: Boolean, - promoBanner: PromoBanner?, - clickIntents: WalletClickIntents, - ) { - promoBanner ?: return - val promoNotification = WalletNotification.RingPromo(onCloseClick = clickIntents::onCloseRingPromoClick) - addIf( - element = promoNotification, - condition = shouldShowPromo && promoBanner.isActive, - ) - } - private fun MutableList.addCriticalNotifications( userWallet: UserWallet, seedPhraseIssueStatus: Boolean, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletNotification.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletNotification.kt index 2d80995272..dfcfda9298 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletNotification.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletNotification.kt @@ -206,16 +206,6 @@ sealed class WalletNotification(val config: NotificationConfig) { ), ) - data class RingPromo(val onCloseClick: () -> Unit) : WalletNotification( - config = NotificationConfig( - title = resourceReference(id = R.string.ring_promo_title), - subtitle = resourceReference(id = R.string.ring_promo_text), - iconResId = R.drawable.img_card_with_ring, - backgroundResId = R.drawable.img_ring_promo_background, - onCloseClick = onCloseClick, - ), - ) - data class NoteMigration(val onClick: () -> Unit) : WalletNotification( config = NotificationConfig( title = resourceReference(R.string.wallet_promo_banner_title), diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletNotifications.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletNotifications.kt index de41263c1e..b985016105 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletNotifications.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletNotifications.kt @@ -5,8 +5,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.ui.Modifier import com.tangem.core.ui.components.notifications.NoteMigrationNotification import com.tangem.core.ui.components.notifications.Notification -import com.tangem.core.ui.components.notifications.OkxPromoNotification -import com.tangem.core.ui.components.notifications.RingPromoNotification import com.tangem.core.ui.res.TangemTheme import com.tangem.feature.wallet.presentation.wallet.state.model.WalletNotification import kotlinx.collections.immutable.ImmutableList @@ -28,16 +26,7 @@ internal fun LazyListScope.notifications(configs: ImmutableList { - OkxPromoNotification( - config = it.config, - modifier = modifier.animateItem(), - ) - } - is WalletNotification.RingPromo -> { - RingPromoNotification( - config = it.config, - modifier = modifier.animateItem(), - ) + // Use it on new promo action } is WalletNotification.NoteMigration -> { NoteMigrationNotification( diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/intents/WalletWarningsClickIntents.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/intents/WalletWarningsClickIntents.kt index ee807b127a..732ee16502 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/intents/WalletWarningsClickIntents.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/intents/WalletWarningsClickIntents.kt @@ -11,7 +11,6 @@ import com.tangem.domain.card.SetCardWasScannedUseCase import com.tangem.domain.feedback.GetCardInfoUseCase import com.tangem.domain.feedback.SendFeedbackEmailUseCase import com.tangem.domain.feedback.models.FeedbackEmailType -import com.tangem.domain.promo.ShouldShowRingPromoUseCase import com.tangem.domain.promo.ShouldShowSwapPromoWalletUseCase import com.tangem.domain.redux.LegacyAction import com.tangem.domain.redux.ReduxStateHolder @@ -66,8 +65,6 @@ internal interface WalletWarningsClickIntents { fun onCloseSwapPromoClick() - fun onCloseRingPromoClick() - fun onSupportClick() fun onNoteMigrationButtonClick(url: String) @@ -94,7 +91,6 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( private val reduxStateHolder: ReduxStateHolder, private val dispatchers: CoroutineDispatcherProvider, private val shouldShowSwapPromoWalletUseCase: ShouldShowSwapPromoWalletUseCase, - private val shouldShowRingPromoUseCase: ShouldShowRingPromoUseCase, private val getCardInfoUseCase: GetCardInfoUseCase, private val sendFeedbackEmailUseCase: SendFeedbackEmailUseCase, private val seedPhraseNotificationUseCase: SeedPhraseNotificationUseCase, @@ -249,7 +245,7 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( analyticsEventHandler.send( TokenSwapPromoAnalyticsEvent.PromotionBannerClicked( source = AnalyticsParam.ScreensSources.Main, - programName = TokenSwapPromoAnalyticsEvent.ProgramName.OKX, + programName = TokenSwapPromoAnalyticsEvent.ProgramName.Empty, // Use it on new promo action action = TokenSwapPromoAnalyticsEvent.PromotionBannerClicked.BannerAction.Closed, ), ) @@ -258,20 +254,6 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor( } } - override fun onCloseRingPromoClick() { - analyticsEventHandler.send( - TokenSwapPromoAnalyticsEvent.PromotionBannerClicked( - source = AnalyticsParam.ScreensSources.Main, - programName = TokenSwapPromoAnalyticsEvent.ProgramName.Ring, - action = TokenSwapPromoAnalyticsEvent.PromotionBannerClicked.BannerAction.Closed, - ), - ) - - viewModelScope.launch { - shouldShowRingPromoUseCase.neverToShow() - } - } - override fun onSupportClick() { val scanResponse = getSelectedUserWallet()?.scanResponse ?: return val cardInfo = getCardInfoUseCase(scanResponse).getOrNull() ?: return