Updated on 2026-08-14
This commit is contained in:
parent
f506db9c0e
commit
5566331bdb
14 changed files with 51 additions and 5 deletions
|
|
@ -136,6 +136,10 @@ dependencies {
|
||||||
implementation(projects.features.staking.impl)
|
implementation(projects.features.staking.impl)
|
||||||
implementation(projects.features.details.api)
|
implementation(projects.features.details.api)
|
||||||
implementation(projects.features.details.impl)
|
implementation(projects.features.details.impl)
|
||||||
|
implementation(projects.features.disclaimer.api)
|
||||||
|
implementation(projects.features.disclaimer.impl)
|
||||||
|
implementation(projects.features.pushNotifications.api)
|
||||||
|
implementation(projects.features.pushNotifications.impl)
|
||||||
|
|
||||||
/** AndroidX libraries */
|
/** AndroidX libraries */
|
||||||
implementation(deps.androidx.core.ktx)
|
implementation(deps.androidx.core.ktx)
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import com.tangem.domain.wallets.repository.WalletsRepository
|
||||||
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
|
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
|
||||||
import com.tangem.features.details.DetailsFeatureToggles
|
import com.tangem.features.details.DetailsFeatureToggles
|
||||||
import com.tangem.features.managetokens.featuretoggles.ManageTokensFeatureToggles
|
import com.tangem.features.managetokens.featuretoggles.ManageTokensFeatureToggles
|
||||||
|
import com.tangem.features.pushnotifications.api.featuretoggles.PushNotificationsFeatureToggles
|
||||||
import com.tangem.features.send.api.featuretoggles.SendFeatureToggles
|
import com.tangem.features.send.api.featuretoggles.SendFeatureToggles
|
||||||
import com.tangem.tap.domain.walletconnect2.domain.WalletConnectSessionsRepository
|
import com.tangem.tap.domain.walletconnect2.domain.WalletConnectSessionsRepository
|
||||||
import com.tangem.tap.features.customtoken.api.featuretoggles.CustomTokenFeatureToggles
|
import com.tangem.tap.features.customtoken.api.featuretoggles.CustomTokenFeatureToggles
|
||||||
|
|
@ -116,4 +117,6 @@ interface ApplicationEntryPoint {
|
||||||
fun getShareManager(): ShareManager
|
fun getShareManager(): ShareManager
|
||||||
|
|
||||||
fun getAppRouter(): AppRouter
|
fun getAppRouter(): AppRouter
|
||||||
|
|
||||||
|
fun getPushNotificationsFeatureToggles(): PushNotificationsFeatureToggles
|
||||||
}
|
}
|
||||||
|
|
@ -46,6 +46,7 @@ import com.tangem.domain.wallets.repository.WalletsRepository
|
||||||
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
|
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
|
||||||
import com.tangem.features.details.DetailsFeatureToggles
|
import com.tangem.features.details.DetailsFeatureToggles
|
||||||
import com.tangem.features.managetokens.featuretoggles.ManageTokensFeatureToggles
|
import com.tangem.features.managetokens.featuretoggles.ManageTokensFeatureToggles
|
||||||
|
import com.tangem.features.pushnotifications.api.featuretoggles.PushNotificationsFeatureToggles
|
||||||
import com.tangem.features.send.api.featuretoggles.SendFeatureToggles
|
import com.tangem.features.send.api.featuretoggles.SendFeatureToggles
|
||||||
import com.tangem.tap.common.analytics.AnalyticsFactory
|
import com.tangem.tap.common.analytics.AnalyticsFactory
|
||||||
import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder
|
import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder
|
||||||
|
|
@ -193,6 +194,9 @@ abstract class TangemApplication : Application(), ImageLoaderFactory {
|
||||||
|
|
||||||
private val appRouter: AppRouter
|
private val appRouter: AppRouter
|
||||||
get() = entryPoint.getAppRouter()
|
get() = entryPoint.getAppRouter()
|
||||||
|
|
||||||
|
private val pushNotificationsFeatureToggles: PushNotificationsFeatureToggles
|
||||||
|
get() = entryPoint.getPushNotificationsFeatureToggles()
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
|
|
@ -284,6 +288,7 @@ abstract class TangemApplication : Application(), ImageLoaderFactory {
|
||||||
urlOpener = urlOpener,
|
urlOpener = urlOpener,
|
||||||
shareManager = shareManager,
|
shareManager = shareManager,
|
||||||
appRouter = appRouter,
|
appRouter = appRouter,
|
||||||
|
pushNotificationsFeatureToggles = pushNotificationsFeatureToggles,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,9 @@ import com.tangem.core.navigation.email.EmailSender
|
||||||
import com.tangem.domain.card.ScanCardUseCase
|
import com.tangem.domain.card.ScanCardUseCase
|
||||||
import com.tangem.domain.card.repository.CardSdkConfigRepository
|
import com.tangem.domain.card.repository.CardSdkConfigRepository
|
||||||
import com.tangem.feature.qrscanning.QrScanningRouter
|
import com.tangem.feature.qrscanning.QrScanningRouter
|
||||||
|
import com.tangem.features.disclaimer.api.DisclaimerRouter
|
||||||
import com.tangem.features.managetokens.navigation.ManageTokensUi
|
import com.tangem.features.managetokens.navigation.ManageTokensUi
|
||||||
|
import com.tangem.features.pushnotifications.api.navigation.PushNotificationsRouter
|
||||||
import com.tangem.features.send.api.navigation.SendRouter
|
import com.tangem.features.send.api.navigation.SendRouter
|
||||||
import com.tangem.features.staking.api.navigation.StakingRouter
|
import com.tangem.features.staking.api.navigation.StakingRouter
|
||||||
import com.tangem.features.tester.api.TesterRouter
|
import com.tangem.features.tester.api.TesterRouter
|
||||||
|
|
@ -27,5 +29,7 @@ sealed interface DaggerGraphAction : Action {
|
||||||
val qrScanningRouter: QrScanningRouter,
|
val qrScanningRouter: QrScanningRouter,
|
||||||
val emailSender: EmailSender,
|
val emailSender: EmailSender,
|
||||||
val stakingRouter: StakingRouter,
|
val stakingRouter: StakingRouter,
|
||||||
|
val disclaimerRouter: DisclaimerRouter,
|
||||||
|
val pushNotificationsRouter: PushNotificationsRouter,
|
||||||
) : DaggerGraphAction
|
) : DaggerGraphAction
|
||||||
}
|
}
|
||||||
|
|
@ -24,6 +24,8 @@ object DaggerGraphReducer {
|
||||||
qrScanningRouter = action.qrScanningRouter,
|
qrScanningRouter = action.qrScanningRouter,
|
||||||
emailSender = action.emailSender,
|
emailSender = action.emailSender,
|
||||||
stakingRouter = action.stakingRouter,
|
stakingRouter = action.stakingRouter,
|
||||||
|
disclaimerRouter = action.disclaimerRouter,
|
||||||
|
pushNotificationsRouter = action.pushNotificationsRouter,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,11 @@ import com.tangem.domain.wallets.repository.WalletsRepository
|
||||||
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
|
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
|
||||||
import com.tangem.feature.qrscanning.QrScanningRouter
|
import com.tangem.feature.qrscanning.QrScanningRouter
|
||||||
import com.tangem.features.details.DetailsFeatureToggles
|
import com.tangem.features.details.DetailsFeatureToggles
|
||||||
|
import com.tangem.features.disclaimer.api.DisclaimerRouter
|
||||||
import com.tangem.features.managetokens.featuretoggles.ManageTokensFeatureToggles
|
import com.tangem.features.managetokens.featuretoggles.ManageTokensFeatureToggles
|
||||||
import com.tangem.features.managetokens.navigation.ManageTokensUi
|
import com.tangem.features.managetokens.navigation.ManageTokensUi
|
||||||
|
import com.tangem.features.pushnotifications.api.featuretoggles.PushNotificationsFeatureToggles
|
||||||
|
import com.tangem.features.pushnotifications.api.navigation.PushNotificationsRouter
|
||||||
import com.tangem.features.send.api.featuretoggles.SendFeatureToggles
|
import com.tangem.features.send.api.featuretoggles.SendFeatureToggles
|
||||||
import com.tangem.features.send.api.navigation.SendRouter
|
import com.tangem.features.send.api.navigation.SendRouter
|
||||||
import com.tangem.features.staking.api.navigation.StakingRouter
|
import com.tangem.features.staking.api.navigation.StakingRouter
|
||||||
|
|
@ -85,4 +88,7 @@ data class DaggerGraphState(
|
||||||
val urlOpener: UrlOpener? = null,
|
val urlOpener: UrlOpener? = null,
|
||||||
val shareManager: ShareManager? = null,
|
val shareManager: ShareManager? = null,
|
||||||
val appRouter: AppRouter? = null,
|
val appRouter: AppRouter? = null,
|
||||||
|
val disclaimerRouter: DisclaimerRouter? = null,
|
||||||
|
val pushNotificationsFeatureToggles: PushNotificationsFeatureToggles? = null,
|
||||||
|
val pushNotificationsRouter: PushNotificationsRouter? = null,
|
||||||
) : StateType
|
) : StateType
|
||||||
|
|
@ -7,6 +7,9 @@ import com.tangem.feature.referral.ReferralFragment
|
||||||
import com.tangem.feature.swap.presentation.SwapFragment
|
import com.tangem.feature.swap.presentation.SwapFragment
|
||||||
import com.tangem.features.details.DetailsFeatureToggles
|
import com.tangem.features.details.DetailsFeatureToggles
|
||||||
import com.tangem.features.details.component.DetailsComponent
|
import com.tangem.features.details.component.DetailsComponent
|
||||||
|
import com.tangem.features.disclaimer.api.DisclaimerRouter
|
||||||
|
import com.tangem.features.pushnotifications.api.featuretoggles.PushNotificationsFeatureToggles
|
||||||
|
import com.tangem.features.pushnotifications.api.navigation.PushNotificationsRouter
|
||||||
import com.tangem.features.send.api.navigation.SendRouter
|
import com.tangem.features.send.api.navigation.SendRouter
|
||||||
import com.tangem.features.staking.api.navigation.StakingRouter
|
import com.tangem.features.staking.api.navigation.StakingRouter
|
||||||
import com.tangem.features.tester.api.TesterRouter
|
import com.tangem.features.tester.api.TesterRouter
|
||||||
|
|
@ -48,6 +51,9 @@ internal class ChildFactory @Inject constructor(
|
||||||
private val stakingRouter: StakingRouter,
|
private val stakingRouter: StakingRouter,
|
||||||
private val testerRouter: TesterRouter,
|
private val testerRouter: TesterRouter,
|
||||||
private val detailsFeatureToggles: DetailsFeatureToggles,
|
private val detailsFeatureToggles: DetailsFeatureToggles,
|
||||||
|
private val pushNotificationsFeatureToggles: PushNotificationsFeatureToggles,
|
||||||
|
private val pushNotificationRouter: PushNotificationsRouter,
|
||||||
|
private val disclaimerRouter: DisclaimerRouter,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@Suppress("LongMethod", "CyclomaticComplexMethod")
|
@Suppress("LongMethod", "CyclomaticComplexMethod")
|
||||||
|
|
@ -97,7 +103,11 @@ internal class ChildFactory @Inject constructor(
|
||||||
route.asFragmentChild(Provider { SecurityModeFragment() })
|
route.asFragmentChild(Provider { SecurityModeFragment() })
|
||||||
}
|
}
|
||||||
is AppRoute.Disclaimer -> {
|
is AppRoute.Disclaimer -> {
|
||||||
route.asFragmentChild(Provider { DisclaimerFragment() })
|
if (pushNotificationsFeatureToggles.isPushNotificationsEnabled) {
|
||||||
|
route.asFragmentChild(Provider { disclaimerRouter.entryFragment() })
|
||||||
|
} else {
|
||||||
|
route.asFragmentChild(Provider { DisclaimerFragment() })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
is AppRoute.Home -> {
|
is AppRoute.Home -> {
|
||||||
route.asFragmentChild(Provider { HomeFragment() })
|
route.asFragmentChild(Provider { HomeFragment() })
|
||||||
|
|
@ -147,6 +157,9 @@ internal class ChildFactory @Inject constructor(
|
||||||
is AppRoute.Staking -> {
|
is AppRoute.Staking -> {
|
||||||
route.asFragmentChild(Provider { stakingRouter.getEntryFragment() })
|
route.asFragmentChild(Provider { stakingRouter.getEntryFragment() })
|
||||||
}
|
}
|
||||||
|
is AppRoute.PushNotification -> {
|
||||||
|
route.asFragmentChild(Provider { pushNotificationRouter.entryFragment() })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -197,4 +197,7 @@ sealed class AppRoute(val path: String) : Route {
|
||||||
const val YIELD_KEY = "yield"
|
const val YIELD_KEY = "yield"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data object PushNotification : AppRoute(path = "/push_notification")
|
||||||
}
|
}
|
||||||
|
|
@ -15,6 +15,7 @@ dependencies {
|
||||||
|
|
||||||
/* Project - API */
|
/* Project - API */
|
||||||
implementation(projects.features.details.api)
|
implementation(projects.features.details.api)
|
||||||
|
implementation(projects.features.disclaimer.api)
|
||||||
implementation(projects.features.tester.api)
|
implementation(projects.features.tester.api)
|
||||||
|
|
||||||
/* Project - Core */
|
/* Project - Core */
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ dependencies {
|
||||||
implementation(deps.compose.accompanist.systemUiController)
|
implementation(deps.compose.accompanist.systemUiController)
|
||||||
implementation(deps.compose.accompanist.permission)
|
implementation(deps.compose.accompanist.permission)
|
||||||
implementation(deps.compose.material3)
|
implementation(deps.compose.material3)
|
||||||
|
implementation(deps.compose.material)
|
||||||
|
|
||||||
/** Core modules */
|
/** Core modules */
|
||||||
implementation(projects.core.ui)
|
implementation(projects.core.ui)
|
||||||
|
|
@ -35,12 +36,12 @@ dependencies {
|
||||||
/** Domain modules */
|
/** Domain modules */
|
||||||
implementation(projects.domain.models)
|
implementation(projects.domain.models)
|
||||||
implementation(projects.domain.card)
|
implementation(projects.domain.card)
|
||||||
|
implementation(projects.domain.settings)
|
||||||
|
|
||||||
/** Feature modules */
|
/** Feature modules */
|
||||||
implementation(projects.features.disclaimer.api)
|
implementation(projects.features.disclaimer.api)
|
||||||
|
|
||||||
/** DI */
|
/** DI */
|
||||||
implementation(deps.hilt.android)
|
implementation(deps.hilt.android)
|
||||||
implementation(project(":domain:settings"))
|
|
||||||
kapt(deps.hilt.kapt)
|
kapt(deps.hilt.kapt)
|
||||||
}
|
}
|
||||||
|
|
@ -5,5 +5,5 @@ package com.tangem.features.pushnotifications.api.featuretoggles
|
||||||
*/
|
*/
|
||||||
interface PushNotificationsFeatureToggles {
|
interface PushNotificationsFeatureToggles {
|
||||||
/** Availability of push notifications */
|
/** Availability of push notifications */
|
||||||
val isRedesignedSendEnabled: Boolean
|
val isPushNotificationsEnabled: Boolean
|
||||||
}
|
}
|
||||||
|
|
@ -28,6 +28,10 @@ dependencies {
|
||||||
/** Core modules */
|
/** Core modules */
|
||||||
implementation(projects.core.ui)
|
implementation(projects.core.ui)
|
||||||
implementation(projects.core.featuretoggles)
|
implementation(projects.core.featuretoggles)
|
||||||
|
implementation(projects.core.navigation)
|
||||||
|
|
||||||
|
/** Common modules */
|
||||||
|
implementation(projects.common.routing)
|
||||||
|
|
||||||
/** Common modules */
|
/** Common modules */
|
||||||
implementation(projects.common.routing)
|
implementation(projects.common.routing)
|
||||||
|
|
@ -40,6 +44,5 @@ dependencies {
|
||||||
|
|
||||||
/** DI */
|
/** DI */
|
||||||
implementation(deps.hilt.android)
|
implementation(deps.hilt.android)
|
||||||
implementation(project(":core:navigation"))
|
|
||||||
kapt(deps.hilt.kapt)
|
kapt(deps.hilt.kapt)
|
||||||
}
|
}
|
||||||
|
|
@ -6,6 +6,6 @@ import com.tangem.features.pushnotifications.api.featuretoggles.PushNotification
|
||||||
internal class DefaultPushNotificationsFeatureToggles(
|
internal class DefaultPushNotificationsFeatureToggles(
|
||||||
private val featureTogglesManager: FeatureTogglesManager,
|
private val featureTogglesManager: FeatureTogglesManager,
|
||||||
) : PushNotificationsFeatureToggles {
|
) : PushNotificationsFeatureToggles {
|
||||||
override val isRedesignedSendEnabled: Boolean
|
override val isPushNotificationsEnabled: Boolean
|
||||||
get() = featureTogglesManager.isFeatureEnabled("PUSH_NOTIFICATIONS_ENABLED")
|
get() = featureTogglesManager.isFeatureEnabled("PUSH_NOTIFICATIONS_ENABLED")
|
||||||
}
|
}
|
||||||
|
|
@ -89,4 +89,5 @@ dependencies {
|
||||||
implementation(projects.features.tester.api)
|
implementation(projects.features.tester.api)
|
||||||
implementation(projects.features.manageTokens.api)
|
implementation(projects.features.manageTokens.api)
|
||||||
implementation(projects.features.details.api)
|
implementation(projects.features.details.api)
|
||||||
|
implementation(projects.features.pushNotifications.api)
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue