From 0e86fd855360259a1952ffbe2171733959b4393f Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 12 Mar 2026 14:58:58 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../java/com/tangem/tap/ApplicationEntryPoint.kt | 3 +++ .../main/java/com/tangem/tap/TangemApplication.kt | 9 ++++++++- .../common/analytics/CustomerIoFeatureToggles.kt | 12 ++++++++++++ .../pushes/TangemPushNotificationService.kt | 15 +++++++++++++-- .../assets/configs/feature_toggles_config.json | 4 ++++ 5 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/common/analytics/CustomerIoFeatureToggles.kt diff --git a/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt b/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt index ba01875acf..54e4f52423 100644 --- a/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt +++ b/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt @@ -43,6 +43,7 @@ import com.tangem.domain.wallets.builder.ColdUserWalletBuilder import com.tangem.domain.wallets.repository.WalletsRepository import com.tangem.features.onboarding.v2.OnboardingV2FeatureToggles import com.tangem.hot.sdk.TangemHotSdk +import com.tangem.tap.common.analytics.CustomerIoFeatureToggles import com.tangem.tap.common.analytics.handlers.BlockchainExceptionHandler import com.tangem.tap.common.analytics.handlers.appsflyer.AppsFlyerClient import com.tangem.tap.common.log.TangemAppLoggerInitializer @@ -151,4 +152,6 @@ interface ApplicationEntryPoint { fun getABTestsManager(): ABTestsManager fun getAppsFlyerClientFactory(): AppsFlyerClient.Factory + + fun getCustomerIoFeatureToggles(): CustomerIoFeatureToggles } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/TangemApplication.kt b/app/src/main/java/com/tangem/tap/TangemApplication.kt index 8cf20b1b8a..3fe333e207 100644 --- a/app/src/main/java/com/tangem/tap/TangemApplication.kt +++ b/app/src/main/java/com/tangem/tap/TangemApplication.kt @@ -61,6 +61,7 @@ import com.tangem.domain.wallets.repository.WalletsRepository import com.tangem.features.onboarding.v2.OnboardingV2FeatureToggles import com.tangem.operations.attestation.api.TangemApiServiceSettings import com.tangem.tap.common.analytics.AnalyticsFactory +import com.tangem.tap.common.analytics.CustomerIoFeatureToggles import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder import com.tangem.tap.common.analytics.handlers.BlockchainExceptionHandler import com.tangem.tap.common.analytics.handlers.amplitude.AmplitudeAnalyticsHandler @@ -239,6 +240,9 @@ open class TangemApplication : Application(), ImageLoaderFactory, Configuration. private val appsFlyerClientFactory: AppsFlyerClient.Factory get() = entryPoint.getAppsFlyerClientFactory() + private val customerIoFeatureToggles: CustomerIoFeatureToggles + get() = entryPoint.getCustomerIoFeatureToggles() + // endregion private val appScope = MainScope() @@ -411,7 +415,10 @@ open class TangemApplication : Application(), ImageLoaderFactory, Configuration. factory.addHandlerBuilder(AmplitudeAnalyticsHandler.Builder()) factory.addHandlerBuilder(FirebaseAnalyticsHandler.Builder()) factory.addHandlerBuilder(AppsFlyerAnalyticsHandler.Builder(appsFlyerClientFactory)) - factory.addHandlerBuilder(CustomerIoAnalyticsHandler.Builder()) + + if (customerIoFeatureToggles.isFeatureEnabled) { + factory.addHandlerBuilder(CustomerIoAnalyticsHandler.Builder()) + } factory.addFilter(oneTimeEventFilter) factory.addFilter(AppsFlyerEventFilter()) diff --git a/app/src/main/java/com/tangem/tap/common/analytics/CustomerIoFeatureToggles.kt b/app/src/main/java/com/tangem/tap/common/analytics/CustomerIoFeatureToggles.kt new file mode 100644 index 0000000000..ae70817e3a --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/analytics/CustomerIoFeatureToggles.kt @@ -0,0 +1,12 @@ +package com.tangem.tap.common.analytics + +import com.tangem.core.configtoggle.feature.FeatureTogglesManager +import javax.inject.Inject + +class CustomerIoFeatureToggles @Inject constructor( + private val featureTogglesManager: FeatureTogglesManager, +) { + + val isFeatureEnabled: Boolean + get() = featureTogglesManager.isFeatureEnabled(name = "CUSTOMER_IO_ENABLED") +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/pushes/TangemPushNotificationService.kt b/app/src/main/java/com/tangem/tap/common/pushes/TangemPushNotificationService.kt index 7c584a3bd6..714a4acfd7 100644 --- a/app/src/main/java/com/tangem/tap/common/pushes/TangemPushNotificationService.kt +++ b/app/src/main/java/com/tangem/tap/common/pushes/TangemPushNotificationService.kt @@ -3,12 +3,19 @@ package com.tangem.tap.common.pushes import android.annotation.SuppressLint import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage +import com.tangem.tap.common.analytics.CustomerIoFeatureToggles +import dagger.hilt.android.AndroidEntryPoint import io.customer.messagingpush.CustomerIOFirebaseMessagingService import timber.log.Timber +import javax.inject.Inject +@AndroidEntryPoint @SuppressLint("MissingFirebaseInstanceTokenRefresh") internal class TangemPushNotificationService : FirebaseMessagingService() { + @Inject + lateinit var customerIoFeatureToggles: CustomerIoFeatureToggles + private val pushNotificationDelegate: PushNotificationDelegate by lazy { PushNotificationDelegate(applicationContext) } @@ -17,13 +24,17 @@ internal class TangemPushNotificationService : FirebaseMessagingService() { super.onNewToken(token) Timber.d("New FCM token received: $token") - CustomerIOFirebaseMessagingService.onNewToken(applicationContext, token) + if (customerIoFeatureToggles.isFeatureEnabled) { + CustomerIOFirebaseMessagingService.onNewToken(applicationContext, token) + } } override fun onMessageReceived(message: RemoteMessage) { super.onMessageReceived(message) - CustomerIOFirebaseMessagingService.onMessageReceived(applicationContext, message) + if (customerIoFeatureToggles.isFeatureEnabled) { + CustomerIOFirebaseMessagingService.onMessageReceived(applicationContext, message) + } val notification = message.notification ?: return val channelId = notification.channelId ?: TANGEM_CHANNEL_ID diff --git a/core/config-toggles/src/main/assets/configs/feature_toggles_config.json b/core/config-toggles/src/main/assets/configs/feature_toggles_config.json index 73b02b2af8..90eb39ed7b 100644 --- a/core/config-toggles/src/main/assets/configs/feature_toggles_config.json +++ b/core/config-toggles/src/main/assets/configs/feature_toggles_config.json @@ -55,5 +55,9 @@ { "name": "MULTI_ADDRESS_UTXO_ENABLED", "version": "undefined" + }, + { + "name": "CUSTOMER_IO_ENABLED", + "version": "undefined" } ]