package com.suno.android.ui.screens.root.logged_out import androidx.lifecycle.ViewModel import com.suno.android.common_analytics.managers.AnalyticsManager import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import javax.inject.Inject @HiltViewModel class LoggedOutNavGraphVM @Inject constructor( private val analyticsManager: AnalyticsManager, ) : ViewModel() { private val _viewStateFlow = MutableStateFlow( UiState(), ) private val _effectFlow = MutableSharedFlow() fun viewStateFlow() = _viewStateFlow.asStateFlow() fun effectFlow() = _effectFlow.asSharedFlow() fun trackScreen( screenName: String?, ) { analyticsManager.trackScreenVisit( screenName = screenName, ) } data class UiState( val loginDialogActive: Boolean = false, val errorDialogActive: Boolean = false, val appReviewDialogActive: Boolean = false, val selectedSongUrl: String? = null, val artistName: String? = null, val title: String? = null, val albumUrl: String? = null, val onConfigLoaded: Boolean = false, ) sealed interface LoggedOutEffects { // data object OnRouteToOnboarding: RootEffects // data object OnLoggedOut : RootEffects } }