package com.suno.android.common_mvi import com.suno.android.common_analytics.managers.AnalyticsManager import com.suno.android.common_core_utils.SunoLogger import com.suno.android.gating.statsig.FeatureGate import com.suno.android.gating.statsig.StatsigFeatureDataSource import dagger.hilt.android.scopes.ViewModelScoped import kotlinx.coroutines.CoroutineScope import javax.inject.Inject @ViewModelScoped class MviProcessorFactory @Inject constructor( private val loggerFactory: SunoLogger.Factory, private val analyticsManager: AnalyticsManager, private val statsigManager: StatsigFeatureDataSource, ) { fun create( tag: Any, initialState: State, coroutineScope: CoroutineScope, reducer: suspend (State, Event, suspend (Effect) -> Unit) -> State, ): MviProcessor = DefaultMviProcessor( logger = loggerFactory.create(tag), initialState = initialState, coroutineScope = coroutineScope, reducer = reducer, analyticsManager = analyticsManager, isNewLoggingGateEnabled = statsigManager.checkGate(FeatureGate.NEW_LOGGING), ) }