feat: setting to keep screen on

This commit is contained in:
2024-07-16 06:50:36 +02:00
committed by Illusion
parent 6af9de24f4
commit d2b4cbb535
15 changed files with 163 additions and 106 deletions
@@ -30,6 +30,7 @@ data class SettingsState(
val appTheme: Int = Theme.SYSTEM.ordinal,
val applications: Map<String, AppInfo> = emptyMap(),
val whitelistSearchQuery: String = "",
val keepScreenOn: Boolean = false,
)
class SettingsViewModel(private val settingsPrefsRepo: SettingsPreferencesRepository, context: Context): ViewModel() {
@@ -47,6 +48,12 @@ class SettingsViewModel(private val settingsPrefsRepo: SettingsPreferencesReposi
}
}
fun toggleKeepScreenOn() {
viewModelScope.launch(Dispatchers.IO) {
settingsPrefsRepo.toggleKeepScreenOn()
}
}
private suspend fun getWhitelistedApps(): Set<String> {
return settingsPrefsRepo.preferences.first().whitelist
}
@@ -73,10 +80,9 @@ class SettingsViewModel(private val settingsPrefsRepo: SettingsPreferencesReposi
)
}
immutablePackages = apps
_uiState.update {
SettingsState(
appTheme = uiState.value.appTheme,
applications = apps,
_uiState.update { state ->
state.copy(
applications = apps
)
}
}
@@ -147,9 +153,12 @@ class SettingsViewModel(private val settingsPrefsRepo: SettingsPreferencesReposi
getPackages(context)
viewModelScope.launch {
settingsPrefsRepo.preferences.collectLatest {
_uiState.value = _uiState.value.copy(
appTheme = it.appTheme,
)
_uiState.update { state ->
state.copy(
appTheme = it.appTheme,
keepScreenOn = it.keepScreenOn,
)
}
}
}
}