Updated on 2026-08-14

This commit is contained in:
Tangem 2026-05-27 19:44:31 +05:00
parent 9be9f8f3e7
commit 865d4a1ed5
4 changed files with 26 additions and 5 deletions

View file

@ -44,6 +44,7 @@ import com.tangem.domain.onboarding.repository.OnboardingRepository
import com.tangem.domain.settings.NeverRequestPermissionUseCase import com.tangem.domain.settings.NeverRequestPermissionUseCase
import com.tangem.domain.settings.NeverToInitiallyAskPermissionUseCase import com.tangem.domain.settings.NeverToInitiallyAskPermissionUseCase
import com.tangem.domain.settings.ShouldInitiallyAskPermissionUseCase import com.tangem.domain.settings.ShouldInitiallyAskPermissionUseCase
import com.tangem.feature.referral.domain.ShouldShowMobileWalletPromoUseCase
import com.tangem.features.hotwallet.HotAccessCodeRequestComponent import com.tangem.features.hotwallet.HotAccessCodeRequestComponent
import com.tangem.features.hotwallet.accesscoderequest.proxy.HotWalletPasswordRequesterProxy import com.tangem.features.hotwallet.accesscoderequest.proxy.HotWalletPasswordRequesterProxy
import com.tangem.features.onboarding.v2.common.analytics.OnboardingEvent import com.tangem.features.onboarding.v2.common.analytics.OnboardingEvent
@ -70,7 +71,7 @@ import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject import dagger.assisted.AssistedInject
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@Suppress("LongParameterList") @Suppress("LongParameterList", "LargeClass")
internal class DefaultRoutingComponent @AssistedInject constructor( internal class DefaultRoutingComponent @AssistedInject constructor(
@Assisted context: AppComponentContext, @Assisted context: AppComponentContext,
@Assisted val initialStack: List<AppRoute>?, @Assisted val initialStack: List<AppRoute>?,
@ -99,6 +100,7 @@ internal class DefaultRoutingComponent @AssistedInject constructor(
private val shouldInitiallyAskPermissionUseCase: ShouldInitiallyAskPermissionUseCase, private val shouldInitiallyAskPermissionUseCase: ShouldInitiallyAskPermissionUseCase,
private val neverRequestPermissionUseCase: NeverRequestPermissionUseCase, private val neverRequestPermissionUseCase: NeverRequestPermissionUseCase,
private val featureTogglesManager: FeatureTogglesManager, private val featureTogglesManager: FeatureTogglesManager,
private val shouldShowMobileWalletPromoUseCase: ShouldShowMobileWalletPromoUseCase,
) : RoutingComponent, ) : RoutingComponent,
AppComponentContext by context, AppComponentContext by context,
SnackbarHandler { SnackbarHandler {
@ -229,18 +231,32 @@ internal class DefaultRoutingComponent @AssistedInject constructor(
} }
} }
val isHideStoriesForReferralEnabled = featureTogglesManager.isFeatureEnabled(
FeatureToggles.TWI_1512_HIDE_STORIES_FOR_REFERRAL_ENABLED,
)
// Referral users skip the Home stories screen and land directly on the
// mobile wallet creation flow.
val afterEmptyRoute: AppRoute = if (isHideStoriesForReferralEnabled && shouldShowMobileWalletPromoUseCase()) {
AppRoute.CreateWalletStart(mode = AppRoute.CreateWalletStart.Mode.HotWallet)
} else {
AppRoute.Home(launchMode = launchMode)
}
val shouldAskPushPermission = shouldInitiallyAskPermissionUseCase(PUSH_PERMISSION).getOrNull() val shouldAskPushPermission = shouldInitiallyAskPermissionUseCase(PUSH_PERMISSION).getOrNull()
?: return AppRoute.Home(launchMode = launchMode) ?: return afterEmptyRoute
return if (shouldAskPushPermission) { return if (shouldAskPushPermission) {
notificationsRepository.setShouldShowNotifications( notificationsRepository.setShouldShowNotifications(
key = NotificationId.EnablePushesReminderNotification.key, key = NotificationId.EnablePushesReminderNotification.key,
value = false, value = false,
) )
AppRoute.PushNotification(AppRoute.PushNotification.Source.Stories) AppRoute.PushNotification(
source = AppRoute.PushNotification.Source.Stories,
nextRoute = afterEmptyRoute,
)
} else { } else {
neverToInitiallyAskPermissionUseCase(PUSH_PERMISSION) neverToInitiallyAskPermissionUseCase(PUSH_PERMISSION)
neverRequestPermissionUseCase(PUSH_PERMISSION) neverRequestPermissionUseCase(PUSH_PERMISSION)
AppRoute.Home(launchMode = launchMode) afterEmptyRoute
} }
} }

View file

@ -448,7 +448,7 @@ internal class ChildFactory @Inject constructor(
params = PushNotificationsParams( params = PushNotificationsParams(
modelCallbacks = PushNotificationsModelCallbacksStub(), modelCallbacks = PushNotificationsModelCallbacksStub(),
source = route.source, source = route.source,
nextRoute = AppRoute.Home(), nextRoute = route.nextRoute ?: AppRoute.Home(),
), ),
componentFactory = pushNotificationsComponentFactory, componentFactory = pushNotificationsComponentFactory,
) )

View file

@ -243,6 +243,7 @@ sealed class AppRoute(val path: String) : Route {
@Serializable @Serializable
data class PushNotification( data class PushNotification(
val source: Source, val source: Source,
val nextRoute: AppRoute? = null,
) : AppRoute(path = "/push_notification") { ) : AppRoute(path = "/push_notification") {
enum class Source { enum class Source {
Stories, Stories,

View file

@ -102,5 +102,9 @@
{ {
"name": "AND_15154_YIELD_PROMO_ENABLED", "name": "AND_15154_YIELD_PROMO_ENABLED",
"version": "undefined" "version": "undefined"
},
{
"name": "TWI_1512_HIDE_STORIES_FOR_REFERRAL_ENABLED",
"version": "5.39"
} }
] ]