package agzam.vyatsu.ui.settings import agzam.vyatsu.domain.repository.PreferencesRepository import agzam.vyatsu.update.AppUpdater import agzam.vyatsu.update.UpdateState import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch class UpdateViewModel( private val updater: AppUpdater, private val preferencesRepository: PreferencesRepository ) : ViewModel() { val updateState: StateFlow = updater.state private val _autoEnabled = MutableStateFlow(false) val autoEnabled: StateFlow = _autoEnabled.asStateFlow() private val _showFirstRunDialog = MutableStateFlow(false) val showFirstRunDialog: StateFlow = _showFirstRunDialog.asStateFlow() init { viewModelScope.launch { _autoEnabled.value = preferencesRepository.autoUpdateEnabled() _showFirstRunDialog.value = !preferencesRepository.autoUpdateAsked() } } fun setAutoEnabled(enabled: Boolean) { _autoEnabled.value = enabled updater.setAutoEnabled(enabled) if (enabled && !updater.canRequestInstalls()) { updater.openUnknownSourcesSettings() } } fun onFirstRunDecision(enable: Boolean) { _showFirstRunDialog.value = false viewModelScope.launch { preferencesRepository.setAutoUpdateAsked(true) } setAutoEnabled(enable) } fun checkNow() = updater.checkForUpdate() fun downloadAndInstall() = updater.downloadAndInstall() fun installDownloadedApk() = updater.installDownloadedApk() fun canRequestInstalls() = updater.canRequestInstalls() fun openUnknownSourcesSettings() = updater.openUnknownSourcesSettings() }