Updated on 2026-08-14
This commit is contained in:
parent
77a12bcb13
commit
ae09293604
37 changed files with 36 additions and 257 deletions
|
|
@ -1,23 +0,0 @@
|
|||
package com.tangem.features.feed.di
|
||||
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
import com.tangem.features.feed.featuretoggle.DefaultFeedFeatureToggle
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
internal object FeedFeatureToggleModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideFeedFeatureToggle(featureTogglesManager: FeatureTogglesManager): FeedFeatureToggle {
|
||||
return DefaultFeedFeatureToggle(
|
||||
featureTogglesManager = featureTogglesManager,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
package com.tangem.features.feed.featuretoggle
|
||||
|
||||
import com.tangem.core.configtoggle.FeatureToggles
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
|
||||
internal class DefaultFeedFeatureToggle(
|
||||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) : FeedFeatureToggle {
|
||||
|
||||
override val isEarnBlockEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.EARN_BLOCK_ENABLED)
|
||||
}
|
||||
|
|
@ -32,7 +32,6 @@ import com.tangem.domain.news.usecase.ManageTrendingNewsUseCase
|
|||
import com.tangem.features.feed.components.feed.DefaultFeedComponent
|
||||
import com.tangem.features.feed.components.feed.FeedBottomSheetRoute
|
||||
import com.tangem.features.commonfeatures.api.addtoportfolio.AddToPortfolioPreselectedDataComponent
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
import com.tangem.features.feed.impl.R
|
||||
import com.tangem.features.feed.model.earn.analytics.EarnAnalyticsEvent
|
||||
import com.tangem.features.feed.model.feed.analytics.FeedAnalyticsEvent
|
||||
|
|
@ -63,7 +62,6 @@ internal class FeedComponentModel @Inject constructor(
|
|||
private val manageTrendingNewsUseCase: ManageTrendingNewsUseCase,
|
||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
private val stateController: FeedStateController,
|
||||
private val feedFeatureToggle: FeedFeatureToggle,
|
||||
private val fetchTopEarnTokensUseCase: FetchTopEarnTokensUseCase,
|
||||
private val getTopEarnTokensUseCase: GetTopEarnTokensUseCase,
|
||||
private val appRouter: AppRouter,
|
||||
|
|
@ -147,7 +145,6 @@ internal class FeedComponentModel @Inject constructor(
|
|||
}
|
||||
},
|
||||
analyticsEventHandler = analyticsEventHandler,
|
||||
feedFeatureToggle = feedFeatureToggle,
|
||||
)
|
||||
|
||||
val currentState = stateController.value
|
||||
|
|
@ -171,7 +168,7 @@ internal class FeedComponentModel @Inject constructor(
|
|||
analyticsEventHandler = analyticsEventHandler,
|
||||
),
|
||||
UpdateEarnStateTransformer(
|
||||
isEarnEnabled = feedFeatureToggle.isEarnBlockEnabled,
|
||||
isEarnEnabled = true,
|
||||
onItemClick = ::handleEarnTokenClick,
|
||||
onRetryClick = ::fetchEarnData,
|
||||
earnResult = earnResult,
|
||||
|
|
@ -206,7 +203,6 @@ internal class FeedComponentModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun fetchEarnData() {
|
||||
if (!feedFeatureToggle.isEarnBlockEnabled) return
|
||||
modelScope.launch(dispatchers.default) {
|
||||
stateController.update(UpdateEarnLoadingStateTransformer())
|
||||
fetchTopEarnTokensUseCase()
|
||||
|
|
@ -280,11 +276,7 @@ internal class FeedComponentModel @Inject constructor(
|
|||
currentSortByType = SortByTypeUM.TopGainers,
|
||||
),
|
||||
globalState = GlobalFeedState.Loading,
|
||||
earnListUM = if (feedFeatureToggle.isEarnBlockEnabled) {
|
||||
EarnListUM.Loading
|
||||
} else {
|
||||
EarnListUM.Empty
|
||||
},
|
||||
earnListUM = EarnListUM.Loading,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.tangem.features.feed.model.feed.state
|
|||
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
import com.tangem.features.feed.model.feed.state.transformers.FeedListUMTransformer
|
||||
import com.tangem.features.feed.model.market.list.state.SortByTypeUM
|
||||
import com.tangem.features.feed.ui.earn.state.EarnListUM
|
||||
|
|
@ -16,9 +15,7 @@ import kotlinx.coroutines.flow.update
|
|||
import javax.inject.Inject
|
||||
|
||||
@ModelScoped
|
||||
internal class FeedStateController @Inject constructor(
|
||||
private val feedFeatureToggle: FeedFeatureToggle,
|
||||
) {
|
||||
internal class FeedStateController @Inject constructor() {
|
||||
|
||||
private val mutableUiState: MutableStateFlow<FeedListUM> = MutableStateFlow(value = getInitialState())
|
||||
|
||||
|
|
@ -67,11 +64,7 @@ internal class FeedStateController @Inject constructor(
|
|||
currentSortByType = SortByTypeUM.Trending,
|
||||
),
|
||||
globalState = GlobalFeedState.Loading,
|
||||
earnListUM = if (feedFeatureToggle.isEarnBlockEnabled) {
|
||||
EarnListUM.Loading
|
||||
} else {
|
||||
EarnListUM.Empty
|
||||
},
|
||||
earnListUM = EarnListUM.Loading,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,6 @@ package com.tangem.features.feed.model.feed.state.transformers
|
|||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.domain.models.earn.EarnTopToken
|
||||
import com.tangem.domain.models.news.TrendingNews
|
||||
import com.tangem.features.feed.entry.featuretoggle.FeedFeatureToggle
|
||||
import com.tangem.features.feed.model.feed.analytics.FeedAnalyticsEvent
|
||||
import com.tangem.features.feed.model.market.list.state.SortByTypeUM
|
||||
import com.tangem.features.feed.ui.earn.state.EarnListUM
|
||||
|
|
@ -19,16 +18,13 @@ internal class UpdateGlobalFeedStateTransformer(
|
|||
private val earnResult: EarnTopToken?,
|
||||
private val onRetryClicked: () -> Unit,
|
||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
private val feedFeatureToggle: FeedFeatureToggle,
|
||||
) : FeedListUMTransformer {
|
||||
|
||||
override fun transform(prevState: FeedListUM): FeedListUM {
|
||||
val blockStates = buildList {
|
||||
add(getNewsState(prevState))
|
||||
add(getChartsState())
|
||||
if (feedFeatureToggle.isEarnBlockEnabled) {
|
||||
add(getEarnState(prevState))
|
||||
}
|
||||
add(getEarnState(prevState))
|
||||
}
|
||||
|
||||
val newGlobalState = when {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue