Updated on 2026-08-14

This commit is contained in:
Tangem 2024-06-19 21:10:01 +05:00
parent f506db9c0e
commit 5566331bdb
14 changed files with 51 additions and 5 deletions

View file

@ -136,6 +136,10 @@ dependencies {
implementation(projects.features.staking.impl)
implementation(projects.features.details.api)
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 */
implementation(deps.androidx.core.ktx)

View file

@ -31,6 +31,7 @@ import com.tangem.domain.wallets.repository.WalletsRepository
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
import com.tangem.features.details.DetailsFeatureToggles
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.tap.domain.walletconnect2.domain.WalletConnectSessionsRepository
import com.tangem.tap.features.customtoken.api.featuretoggles.CustomTokenFeatureToggles
@ -116,4 +117,6 @@ interface ApplicationEntryPoint {
fun getShareManager(): ShareManager
fun getAppRouter(): AppRouter
fun getPushNotificationsFeatureToggles(): PushNotificationsFeatureToggles
}

View file

@ -46,6 +46,7 @@ import com.tangem.domain.wallets.repository.WalletsRepository
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
import com.tangem.features.details.DetailsFeatureToggles
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.tap.common.analytics.AnalyticsFactory
import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder
@ -193,6 +194,9 @@ abstract class TangemApplication : Application(), ImageLoaderFactory {
private val appRouter: AppRouter
get() = entryPoint.getAppRouter()
private val pushNotificationsFeatureToggles: PushNotificationsFeatureToggles
get() = entryPoint.getPushNotificationsFeatureToggles()
// endregion
override fun onCreate() {
@ -284,6 +288,7 @@ abstract class TangemApplication : Application(), ImageLoaderFactory {
urlOpener = urlOpener,
shareManager = shareManager,
appRouter = appRouter,
pushNotificationsFeatureToggles = pushNotificationsFeatureToggles,
),
),
)

View file

@ -4,7 +4,9 @@ import com.tangem.core.navigation.email.EmailSender
import com.tangem.domain.card.ScanCardUseCase
import com.tangem.domain.card.repository.CardSdkConfigRepository
import com.tangem.feature.qrscanning.QrScanningRouter
import com.tangem.features.disclaimer.api.DisclaimerRouter
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.staking.api.navigation.StakingRouter
import com.tangem.features.tester.api.TesterRouter
@ -27,5 +29,7 @@ sealed interface DaggerGraphAction : Action {
val qrScanningRouter: QrScanningRouter,
val emailSender: EmailSender,
val stakingRouter: StakingRouter,
val disclaimerRouter: DisclaimerRouter,
val pushNotificationsRouter: PushNotificationsRouter,
) : DaggerGraphAction
}

View file

@ -24,6 +24,8 @@ object DaggerGraphReducer {
qrScanningRouter = action.qrScanningRouter,
emailSender = action.emailSender,
stakingRouter = action.stakingRouter,
disclaimerRouter = action.disclaimerRouter,
pushNotificationsRouter = action.pushNotificationsRouter,
)
}
}

View file

@ -28,8 +28,11 @@ import com.tangem.domain.wallets.repository.WalletsRepository
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
import com.tangem.feature.qrscanning.QrScanningRouter
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.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.navigation.SendRouter
import com.tangem.features.staking.api.navigation.StakingRouter
@ -85,4 +88,7 @@ data class DaggerGraphState(
val urlOpener: UrlOpener? = null,
val shareManager: ShareManager? = null,
val appRouter: AppRouter? = null,
val disclaimerRouter: DisclaimerRouter? = null,
val pushNotificationsFeatureToggles: PushNotificationsFeatureToggles? = null,
val pushNotificationsRouter: PushNotificationsRouter? = null,
) : StateType

View file

@ -7,6 +7,9 @@ import com.tangem.feature.referral.ReferralFragment
import com.tangem.feature.swap.presentation.SwapFragment
import com.tangem.features.details.DetailsFeatureToggles
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.staking.api.navigation.StakingRouter
import com.tangem.features.tester.api.TesterRouter
@ -48,6 +51,9 @@ internal class ChildFactory @Inject constructor(
private val stakingRouter: StakingRouter,
private val testerRouter: TesterRouter,
private val detailsFeatureToggles: DetailsFeatureToggles,
private val pushNotificationsFeatureToggles: PushNotificationsFeatureToggles,
private val pushNotificationRouter: PushNotificationsRouter,
private val disclaimerRouter: DisclaimerRouter,
) {
@Suppress("LongMethod", "CyclomaticComplexMethod")
@ -97,7 +103,11 @@ internal class ChildFactory @Inject constructor(
route.asFragmentChild(Provider { SecurityModeFragment() })
}
is AppRoute.Disclaimer -> {
route.asFragmentChild(Provider { DisclaimerFragment() })
if (pushNotificationsFeatureToggles.isPushNotificationsEnabled) {
route.asFragmentChild(Provider { disclaimerRouter.entryFragment() })
} else {
route.asFragmentChild(Provider { DisclaimerFragment() })
}
}
is AppRoute.Home -> {
route.asFragmentChild(Provider { HomeFragment() })
@ -147,6 +157,9 @@ internal class ChildFactory @Inject constructor(
is AppRoute.Staking -> {
route.asFragmentChild(Provider { stakingRouter.getEntryFragment() })
}
is AppRoute.PushNotification -> {
route.asFragmentChild(Provider { pushNotificationRouter.entryFragment() })
}
}
}

View file

@ -197,4 +197,7 @@ sealed class AppRoute(val path: String) : Route {
const val YIELD_KEY = "yield"
}
}
@Serializable
data object PushNotification : AppRoute(path = "/push_notification")
}

View file

@ -15,6 +15,7 @@ dependencies {
/* Project - API */
implementation(projects.features.details.api)
implementation(projects.features.disclaimer.api)
implementation(projects.features.tester.api)
/* Project - Core */

View file

@ -24,6 +24,7 @@ dependencies {
implementation(deps.compose.accompanist.systemUiController)
implementation(deps.compose.accompanist.permission)
implementation(deps.compose.material3)
implementation(deps.compose.material)
/** Core modules */
implementation(projects.core.ui)
@ -35,12 +36,12 @@ dependencies {
/** Domain modules */
implementation(projects.domain.models)
implementation(projects.domain.card)
implementation(projects.domain.settings)
/** Feature modules */
implementation(projects.features.disclaimer.api)
/** DI */
implementation(deps.hilt.android)
implementation(project(":domain:settings"))
kapt(deps.hilt.kapt)
}

View file

@ -5,5 +5,5 @@ package com.tangem.features.pushnotifications.api.featuretoggles
*/
interface PushNotificationsFeatureToggles {
/** Availability of push notifications */
val isRedesignedSendEnabled: Boolean
val isPushNotificationsEnabled: Boolean
}

View file

@ -28,6 +28,10 @@ dependencies {
/** Core modules */
implementation(projects.core.ui)
implementation(projects.core.featuretoggles)
implementation(projects.core.navigation)
/** Common modules */
implementation(projects.common.routing)
/** Common modules */
implementation(projects.common.routing)
@ -40,6 +44,5 @@ dependencies {
/** DI */
implementation(deps.hilt.android)
implementation(project(":core:navigation"))
kapt(deps.hilt.kapt)
}

View file

@ -6,6 +6,6 @@ import com.tangem.features.pushnotifications.api.featuretoggles.PushNotification
internal class DefaultPushNotificationsFeatureToggles(
private val featureTogglesManager: FeatureTogglesManager,
) : PushNotificationsFeatureToggles {
override val isRedesignedSendEnabled: Boolean
override val isPushNotificationsEnabled: Boolean
get() = featureTogglesManager.isFeatureEnabled("PUSH_NOTIFICATIONS_ENABLED")
}

View file

@ -89,4 +89,5 @@ dependencies {
implementation(projects.features.tester.api)
implementation(projects.features.manageTokens.api)
implementation(projects.features.details.api)
implementation(projects.features.pushNotifications.api)
}