package com.suno.android.ui.screens.home.mediaplayer import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.suno.android.common_core_utils.SunoLogger import com.suno.android.media.MediaManager import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.update import javax.inject.Inject @HiltViewModel class BottomMediaPlayerSpacerViewModel @Inject constructor( loggerFactory: SunoLogger.Factory, mediaManager: MediaManager, ) : ViewModel() { private val logger = loggerFactory.create(this@BottomMediaPlayerSpacerViewModel) private val _viewState = MutableStateFlow(UiState()) val viewState: StateFlow get() = _viewState.asStateFlow() init { mediaManager.mediaPlayerFlow().onEach { mediaPlayerState -> _viewState.update { oldState -> oldState.copy( isMediaPlayerVisible = mediaPlayerState.startedPlayingMusic, ) } }.catch { exception -> logger.e(exception) }.launchIn(viewModelScope) } data class UiState( val isMediaPlayerVisible: Boolean = false, ) }