Updated on 2026-08-14

This commit is contained in:
Tangem 2023-07-03 13:35:16 +03:00
parent 1c18447f39
commit 67261ac805
7 changed files with 17 additions and 36 deletions

View file

@ -6,7 +6,6 @@ import com.tangem.datasource.api.promotion.models.*
import com.tangem.feature.learn2earn.data.api.Learn2earnPreferenceStorage
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.utils.coroutines.AppCoroutineDispatcherProvider
import kotlinx.coroutines.withContext
import timber.log.Timber
@ -15,7 +14,6 @@ import timber.log.Timber
[REDACTED_AUTHOR]
*/
internal class DefaultLearn2earnRepository(
override val featureToggleManager: Learn2earnFeatureToggleManager,
private val preferencesStorage: Learn2earnPreferenceStorage,
private val api: PromotionApi,
private val dispatchers: AppCoroutineDispatcherProvider,

View file

@ -2,15 +2,12 @@ package com.tangem.feature.learn2earn.data.api
import com.tangem.datasource.api.promotion.models.*
import com.tangem.feature.learn2earn.data.models.PromoUserData
import com.tangem.feature.learn2earn.data.toggles.Learn2earnFeatureToggleManager
/**
[REDACTED_AUTHOR]
*/
interface Learn2earnRepository {
val featureToggleManager: Learn2earnFeatureToggleManager
fun getUserData(): PromoUserData
fun updateUserData(userData: PromoUserData)

View file

@ -2,7 +2,6 @@ package com.tangem.feature.learn2earn.data.di
import android.content.Context
import com.squareup.moshi.Moshi
import com.tangem.core.featuretoggle.manager.FeatureTogglesManager
import com.tangem.datasource.api.promotion.PromotionApi
import com.tangem.datasource.di.NetworkMoshi
import com.tangem.datasource.di.PromotionOneInch
@ -10,10 +9,6 @@ import com.tangem.feature.learn2earn.data.DefaultLearn2earnRepository
import com.tangem.feature.learn2earn.data.DefaultPreferenceStorage
import com.tangem.feature.learn2earn.data.api.Learn2earnPreferenceStorage
import com.tangem.feature.learn2earn.data.api.Learn2earnRepository
import com.tangem.feature.learn2earn.data.toggles.DevLearn2earnFeatureToggleManager
import com.tangem.feature.learn2earn.data.toggles.Learn2earnFeatureToggleManager
import com.tangem.feature.learn2earn.data.toggles.ProdLearn2earnFeatureToggleManager
import com.tangem.feature.learn2earn.impl.BuildConfig
import com.tangem.utils.coroutines.AppCoroutineDispatcherProvider
import dagger.Module
import dagger.Provides
@ -24,17 +19,7 @@ import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
class Learn2earnDataModule {
@Provides
@Singleton
fun provideFeatureToggle(featureToggleManager: FeatureTogglesManager): Learn2earnFeatureToggleManager {
return if (BuildConfig.DEBUG) {
DevLearn2earnFeatureToggleManager()
} else {
ProdLearn2earnFeatureToggleManager(featureToggleManager)
}
}
internal class Learn2earnDataModule {
@Provides
@Singleton
@ -45,14 +30,12 @@ class Learn2earnDataModule {
@Provides
@Singleton
fun provideRepository(
featureToggleManager: Learn2earnFeatureToggleManager,
preferenceStorage: Learn2earnPreferenceStorage,
@NetworkMoshi moshi: Moshi,
@PromotionOneInch promotionApi: PromotionApi,
dispatchers: AppCoroutineDispatcherProvider,
): Learn2earnRepository {
return DefaultLearn2earnRepository(
featureToggleManager = featureToggleManager,
preferencesStorage = preferenceStorage,
api = promotionApi,
dispatchers = dispatchers,

View file

@ -5,7 +5,7 @@ import com.tangem.core.featuretoggle.manager.FeatureTogglesManager
/**
[REDACTED_AUTHOR]
*/
class ProdLearn2earnFeatureToggleManager(
internal class DefaultLearn2earnFeatureToggleManager(
private val featureTogglesManager: FeatureTogglesManager,
) : Learn2earnFeatureToggleManager {

View file

@ -1,10 +0,0 @@
package com.tangem.feature.learn2earn.data.toggles
/**
[REDACTED_AUTHOR]
*/
class DevLearn2earnFeatureToggleManager : Learn2earnFeatureToggleManager {
override val isLearn2earnEnabled: Boolean
get() = true
}

View file

@ -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,7 +209,7 @@ class DefaultLearn2earnInteractor(
private fun promotionIsActive(): Boolean {
val userData = repository.getUserData()
val isActive = when {
!repository.featureToggleManager.isLearn2earnEnabled -> false
!featureToggleManager.isLearn2earnEnabled -> false
userData.isAlreadyReceivedAward -> false
promotion.isError() -> false
else -> {
@ -220,7 +222,7 @@ class DefaultLearn2earnInteractor(
}
private suspend fun initPromotionInfo() {
promotion = if (repository.featureToggleManager.isLearn2earnEnabled) {
promotion = if (featureToggleManager.isLearn2earnEnabled) {
repository.getPromotionInfo()
.fold(
onSuccess = { response ->

View file

@ -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,