11package com.codandotv.streamplayerapp.feature_list_streams.detail.presentation.screens
22
3- import androidx.compose.runtime.State
4- import androidx.compose.runtime.mutableStateOf
53import androidx.lifecycle.DefaultLifecycleObserver
64import androidx.lifecycle.LifecycleOwner
75import androidx.lifecycle.ViewModel
86import androidx.lifecycle.viewModelScope
97import com.codandotv.streamplayerapp.core_networking.handleError.catchFailure
108import com.codandotv.streamplayerapp.feature_list_streams.detail.domain.DetailStreamUseCase
119import com.codandotv.streamplayerapp.feature_list_streams.detail.presentation.screens.DetailStreamsUIState.*
12- import kotlinx.coroutines.flow.onCompletion
10+ import kotlinx.coroutines.flow.MutableStateFlow
11+ import kotlinx.coroutines.flow.SharingStarted
12+ import kotlinx.coroutines.flow.StateFlow
1313import kotlinx.coroutines.flow.onStart
14+ import kotlinx.coroutines.flow.stateIn
15+ import kotlinx.coroutines.flow.update
1416import kotlinx.coroutines.launch
1517
1618class DetailStreamViewModel (
1719 private val useCase : DetailStreamUseCase ,
1820) : ViewModel(), DefaultLifecycleObserver {
1921
20- private val _uiState = mutableStateOf<DetailStreamsUIState >(LoadingStreamUIState )
21- val uiState: State <DetailStreamsUIState > = _uiState
22+ private val _uiState = MutableStateFlow <DetailStreamsUIState >(LoadingStreamUIState )
23+ val uiState : StateFlow <DetailStreamsUIState > = _uiState .stateIn(
24+ viewModelScope,
25+ SharingStarted .Eagerly ,
26+ initialValue = _uiState .value
27+ )
2228
2329 override fun onCreate (owner : LifecycleOwner ) {
2430 super .onCreate(owner)
@@ -29,15 +35,17 @@ class DetailStreamViewModel(
2935 .catchFailure {
3036 println (" >>>> ${it.errorMessage} " )
3137 }
32- .collect {
33- _uiState .value = DetailStreamsLoadedUIState (
34- detailStream = it
35- )
38+ .collect { detailStream ->
39+ _uiState .update {
40+ DetailStreamsLoadedUIState (
41+ detailStream = detailStream
42+ )
43+ }
3644 }
3745 }
3846 }
3947
4048 private fun onLoading () {
41- _uiState .value = LoadingStreamUIState
49+ _uiState .update { LoadingStreamUIState }
4250 }
4351}
0 commit comments