package top.fatweb.oxygen.toolbox import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import top.fatweb.oxygen.toolbox.model.UserData import top.fatweb.oxygen.toolbox.repository.UserDataRepository import javax.inject.Inject import kotlin.time.Duration.Companion.seconds @HiltViewModel class MainActivityViewModel @Inject constructor( userDataRepository: UserDataRepository ) : ViewModel() { val uiState: StateFlow = userDataRepository.userData.map { MainActivityUiState.Success(it) }.stateIn( scope = viewModelScope, initialValue = MainActivityUiState.Loading, started = SharingStarted.WhileSubscribed(5.seconds.inWholeMilliseconds) ) } sealed interface MainActivityUiState { data object Loading : MainActivityUiState data class Success(val userData: UserData) : MainActivityUiState }