Use DataStore preference for imperial units

This commit is contained in:
MM20 2022-01-02 18:24:19 +01:00
parent 1d589e5246
commit 8969d77231
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -1,11 +1,13 @@
package de.mm20.launcher2.ui.launcher.widgets.weather package de.mm20.launcher2.ui.launcher.widgets.weather
import androidx.lifecycle.* import androidx.lifecycle.*
import de.mm20.launcher2.preferences.LauncherDataStore
import de.mm20.launcher2.preferences.LauncherPreferences import de.mm20.launcher2.preferences.LauncherPreferences
import de.mm20.launcher2.weather.DailyForecast import de.mm20.launcher2.weather.DailyForecast
import de.mm20.launcher2.weather.Forecast import de.mm20.launcher2.weather.Forecast
import de.mm20.launcher2.weather.WeatherRepository import de.mm20.launcher2.weather.WeatherRepository
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
import org.koin.core.component.inject import org.koin.core.component.inject
@ -14,6 +16,8 @@ import kotlin.math.min
class WeatherWidgetWM : ViewModel(), KoinComponent { class WeatherWidgetWM : ViewModel(), KoinComponent {
private val weatherRepository: WeatherRepository by inject() private val weatherRepository: WeatherRepository by inject()
private val dataStore: LauncherDataStore by inject()
private var selectedDayIndex = 0 private var selectedDayIndex = 0
set(value) { set(value) {
field = min(value, forecasts.lastIndex) field = min(value, forecasts.lastIndex)
@ -55,7 +59,7 @@ class WeatherWidgetWM : ViewModel(), KoinComponent {
val currentDayForecasts = MutableLiveData<List<Forecast>>(emptyList()) val currentDayForecasts = MutableLiveData<List<Forecast>>(emptyList())
val currentDailyForecast = MutableLiveData<DailyForecast>(null) val currentDailyForecast = MutableLiveData<DailyForecast>(null)
val imperialUnits = MutableLiveData(LauncherPreferences.instance.imperialUnits) val imperialUnits = dataStore.data.map { it.weather.imperialUnits }.asLiveData()
fun selectDay(index: Int) { fun selectDay(index: Int) {
selectedDayIndex = min(index, forecasts.lastIndex) selectedDayIndex = min(index, forecasts.lastIndex)