diff --git a/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json b/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json index ab2ed7ee14..9a45d3070f 100644 --- a/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json +++ b/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json @@ -14,5 +14,9 @@ { "name": "REDESIGNED_WALLET_SCREEN_ENABLED", "version": "undefined" + }, + { + "name": "1INCH_LEARN_2_EARN_ENABLED", + "version": "undefined" } ] \ No newline at end of file diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/di/Learn2earnDataModule.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/di/Learn2earnDataModule.kt index 98cb9f1b9c..186b3c8458 100644 --- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/di/Learn2earnDataModule.kt +++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/di/Learn2earnDataModule.kt @@ -19,7 +19,7 @@ import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) -class Learn2earnDataModule { +internal class Learn2earnDataModule { @Provides @Singleton diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/toggles/DefaultLearn2earnFeatureToggleManager.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/toggles/DefaultLearn2earnFeatureToggleManager.kt new file mode 100644 index 0000000000..19306c2aed --- /dev/null +++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/toggles/DefaultLearn2earnFeatureToggleManager.kt @@ -0,0 +1,14 @@ +package com.tangem.feature.learn2earn.data.toggles + +import com.tangem.core.featuretoggle.manager.FeatureTogglesManager + +/** +[REDACTED_AUTHOR] + */ +internal class DefaultLearn2earnFeatureToggleManager( + private val featureTogglesManager: FeatureTogglesManager, +) : Learn2earnFeatureToggleManager { + + override val isLearn2earnEnabled: Boolean + get() = featureTogglesManager.isFeatureEnabled(name = "1INCH_LEARN_2_EARN_ENABLED") +} \ No newline at end of file diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/toggles/Learn2earnFeatureToggleManager.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/toggles/Learn2earnFeatureToggleManager.kt new file mode 100644 index 0000000000..64f5c4abfc --- /dev/null +++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/data/toggles/Learn2earnFeatureToggleManager.kt @@ -0,0 +1,11 @@ +package com.tangem.feature.learn2earn.data.toggles + +/** + * Feature toggles manager implementation of "learn2earn" feature + * +[REDACTED_AUTHOR] + */ +interface Learn2earnFeatureToggleManager { + + val isLearn2earnEnabled: Boolean +} \ No newline at end of file diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/DefaultLearn2earnInteractor.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/DefaultLearn2earnInteractor.kt index 7bfc706242..90d279f90f 100644 --- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/DefaultLearn2earnInteractor.kt +++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/DefaultLearn2earnInteractor.kt @@ -5,6 +5,7 @@ import com.tangem.datasource.api.promotion.models.AbstractPromotionResponse import com.tangem.datasource.api.promotion.models.PromotionInfoResponse import com.tangem.feature.learn2earn.data.api.Learn2earnRepository import com.tangem.feature.learn2earn.data.models.PromoUserData +import com.tangem.feature.learn2earn.data.toggles.Learn2earnFeatureToggleManager import com.tangem.feature.learn2earn.domain.api.* import com.tangem.feature.learn2earn.domain.models.Promotion import com.tangem.feature.learn2earn.domain.models.PromotionError @@ -17,6 +18,7 @@ import com.tangem.lib.crypto.models.Currency [REDACTED_AUTHOR] */ class DefaultLearn2earnInteractor( + private val featureToggleManager: Learn2earnFeatureToggleManager, private val repository: Learn2earnRepository, private val userWalletManager: UserWalletManager, private val derivationManager: DerivationManager, @@ -207,6 +209,7 @@ class DefaultLearn2earnInteractor( private fun promotionIsActive(): Boolean { val userData = repository.getUserData() val isActive = when { + !featureToggleManager.isLearn2earnEnabled -> false userData.isAlreadyReceivedAward -> false promotion.isError() -> false else -> { @@ -219,34 +222,41 @@ class DefaultLearn2earnInteractor( } private suspend fun initPromotionInfo() { - promotion = repository.getPromotionInfo() - .fold( - onSuccess = { response -> - val responseError = response.error - if (responseError == null) { - val npeMessage = { "Shouldn't be null" } - Promotion( - info = Promotion.PromotionInfo( - newCard = requireNotNull(response.newCard, npeMessage), - oldCard = requireNotNull(response.oldCard, npeMessage), - awardPaymentToken = requireNotNull(response.awardPaymentToken, npeMessage), - ), - error = null, - ) - } else { + promotion = if (featureToggleManager.isLearn2earnEnabled) { + repository.getPromotionInfo() + .fold( + onSuccess = { response -> + val responseError = response.error + if (responseError == null) { + val npeMessage = { "Shouldn't be null" } + Promotion( + info = Promotion.PromotionInfo( + newCard = requireNotNull(response.newCard, npeMessage), + oldCard = requireNotNull(response.oldCard, npeMessage), + awardPaymentToken = requireNotNull(response.awardPaymentToken, npeMessage), + ), + error = null, + ) + } else { + Promotion( + info = null, + error = responseError.toDomainError(), + ) + } + }, + onFailure = { Promotion( info = null, - error = responseError.toDomainError(), + error = PromotionError.NetworkUnreachable, ) - } - }, - onFailure = { - Promotion( - info = null, - error = PromotionError.NetworkUnreachable, - ) - }, + }, + ) + } else { + Promotion( + info = null, + error = null, ) + } } private fun getCurrencyForAward(): Currency? { diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/di/Learn2earnDomainModule.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/di/Learn2earnDomainModule.kt index 7ae76d3a19..7f48ea304a 100644 --- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/di/Learn2earnDomainModule.kt +++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/domain/di/Learn2earnDomainModule.kt @@ -1,7 +1,10 @@ package com.tangem.feature.learn2earn.domain.di import android.content.Context +import com.tangem.core.featuretoggle.manager.FeatureTogglesManager import com.tangem.feature.learn2earn.data.api.Learn2earnRepository +import com.tangem.feature.learn2earn.data.toggles.DefaultLearn2earnFeatureToggleManager +import com.tangem.feature.learn2earn.data.toggles.Learn2earnFeatureToggleManager import com.tangem.feature.learn2earn.domain.DefaultLearn2earnInteractor import com.tangem.feature.learn2earn.domain.api.Learn2earnDependencyProvider import com.tangem.feature.learn2earn.domain.api.Learn2earnInteractor @@ -26,15 +29,23 @@ class Learn2earnDomainModule { return Learn2earnRouter(context) } + @Provides + @Singleton + fun provideFeatureToggle(featureToggleManager: FeatureTogglesManager): Learn2earnFeatureToggleManager { + return DefaultLearn2earnFeatureToggleManager(featureToggleManager) + } + @Provides @Singleton fun provideInteractor( + featureToggleManager: Learn2earnFeatureToggleManager, repository: Learn2earnRepository, dependencyProvider: Learn2earnDependencyProvider, userWalletManager: UserWalletManager, derivationManager: DerivationManager, ): Learn2earnInteractor { return DefaultLearn2earnInteractor( + featureToggleManager = featureToggleManager, repository = repository, userWalletManager = userWalletManager, derivationManager = derivationManager,