package com.suno.android.ui.screens.create import androidx.lifecycle.ViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import javax.inject.Inject @HiltViewModel class CreateModeSelectionScreenVM @Inject constructor() : ViewModel() { private val _viewStateFlow = MutableStateFlow( UiState( createMode = CreateMode.CAMERA, ), ) fun viewStateFlow(): StateFlow = _viewStateFlow.asStateFlow() private val _effects = MutableSharedFlow() fun effects() = _effects.asSharedFlow() fun setCreateMode( createMode: CreateMode, ) { _viewStateFlow.update { oldState -> oldState.copy( createMode = createMode, ) } } data class UiState( val loading: Boolean = false, val createMode: CreateMode, ) enum class CreateMode { TEXT, CAMERA, AUDIO, } sealed interface CreateScreenEffects }