Fix weather widget missing permission / no data UI overlap

This commit is contained in:
MM20 2022-04-02 14:05:24 +02:00
parent e7775b5a2a
commit 9433b11747
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -58,6 +58,7 @@ fun WeatherWidget() {
val forecast = selectedForecast ?: run { val forecast = selectedForecast ?: run {
val hasPermission by viewModel.hasLocationPermission.observeAsState() val hasPermission by viewModel.hasLocationPermission.observeAsState()
val autoLocation by viewModel.autoLocation.observeAsState() val autoLocation by viewModel.autoLocation.observeAsState()
Column {
AnimatedVisibility(hasPermission == false && autoLocation == true) { AnimatedVisibility(hasPermission == false && autoLocation == true) {
MissingPermissionBanner( MissingPermissionBanner(
modifier = Modifier modifier = Modifier
@ -79,6 +80,7 @@ fun WeatherWidget() {
) )
} }
NoData() NoData()
}
return return
} }
@ -86,7 +88,9 @@ fun WeatherWidget() {
CurrentWeather(forecast, imperialUnits) CurrentWeather(forecast, imperialUnits)
Row( Row(
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp), modifier = Modifier
.fillMaxWidth()
.padding(vertical = 2.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
val dailyForecasts by viewModel.dailyForecasts.observeAsState(emptyList()) val dailyForecasts by viewModel.dailyForecasts.observeAsState(emptyList())
@ -98,7 +102,9 @@ fun WeatherWidget() {
onDaySelected = { onDaySelected = {
viewModel.selectDay(it) viewModel.selectDay(it)
}, },
modifier = Modifier.weight(1f).padding(horizontal = 4.dp), modifier = Modifier
.weight(1f)
.padding(horizontal = 4.dp),
imperialUnits = imperialUnits imperialUnits = imperialUnits
) )
} }
@ -110,7 +116,9 @@ fun WeatherWidget() {
onTimeSelected = { onTimeSelected = {
viewModel.selectForecast(it) viewModel.selectForecast(it)
}, },
modifier = Modifier.weight(1f).padding(horizontal = 4.dp), modifier = Modifier
.weight(1f)
.padding(horizontal = 4.dp),
) )
} }
} }
@ -162,18 +170,27 @@ fun CurrentWeather(forecast: Forecast, imperialUnits: Boolean) {
) { ) {
if (forecast.humidity >= 0) { if (forecast.humidity >= 0) {
Text( Text(
stringResource(id = R.string.weather_details_humidity, "${forecast.humidity.roundToInt()} %"), stringResource(
id = R.string.weather_details_humidity,
"${forecast.humidity.roundToInt()} %"
),
style = MaterialTheme.typography.bodySmall, style = MaterialTheme.typography.bodySmall,
) )
} }
Text( Text(
stringResource(id = R.string.weather_details_wind, formatWindSpeed(imperialUnits, forecast)), stringResource(
id = R.string.weather_details_wind,
formatWindSpeed(imperialUnits, forecast)
),
style = MaterialTheme.typography.bodySmall, style = MaterialTheme.typography.bodySmall,
) )
val precipitation = formatPrecipitation(imperialUnits, forecast) val precipitation = formatPrecipitation(imperialUnits, forecast)
if (precipitation != null) { if (precipitation != null) {
Text( Text(
stringResource(id = R.string.weather_details_precipitation, precipitation), stringResource(
id = R.string.weather_details_precipitation,
precipitation
),
style = MaterialTheme.typography.bodySmall, style = MaterialTheme.typography.bodySmall,
) )
} }