From 543bcaf47832d4708b1e8b73974254483a92c581 Mon Sep 17 00:00:00 2001 From: Tim Kluge Date: Tue, 31 Dec 2024 11:45:36 +0100 Subject: [PATCH] Do not clear view on flow close --- app/build.gradle.kts | 2 +- app/src/main/kotlin/de/timklge/karooheadwind/Extensions.kt | 4 ++-- .../karooheadwind/datatypes/HeadwindDirectionDataType.kt | 7 +------ .../de/timklge/karooheadwind/datatypes/WeatherDataType.kt | 5 ----- .../karooheadwind/datatypes/WeatherForecastDataType.kt | 5 ----- .../kotlin/de/timklge/karooheadwind/screens/MainScreen.kt | 3 ++- 6 files changed, 6 insertions(+), 20 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 120f0fb..e7506d2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -38,7 +38,7 @@ android { } release { signingConfig = signingConfigs.getByName("release") - // isMinifyEnabled = false + isMinifyEnabled = false proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/Extensions.kt b/app/src/main/kotlin/de/timklge/karooheadwind/Extensions.kt index 395bbca..0f438ce 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/Extensions.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/Extensions.kt @@ -92,7 +92,7 @@ fun Context.streamCurrentWeatherData(): Flow { val data = settingsJson[currentDataKey] data?.let { d -> jsonWithUnknownKeys.decodeFromString(d) } } catch (e: Throwable) { - Log.e(KarooHeadwindExtension.TAG, "Failed to read preferences", e) + Log.e(KarooHeadwindExtension.TAG, "Failed to read weather data", e) null } }.filterNotNull().distinctUntilChanged().filter { it.current.time * 1000 >= System.currentTimeMillis() - (1000 * 60 * 60 * 12) } @@ -107,7 +107,7 @@ fun Context.streamWidgetSettings(): Flow { jsonWithUnknownKeys.decodeFromString(HeadwindWidgetSettings.defaultWidgetSettings) } } catch(e: Throwable){ - Log.e(KarooHeadwindExtension.TAG, "Failed to read preferences", e) + Log.e(KarooHeadwindExtension.TAG, "Failed to read widget preferences", e) jsonWithUnknownKeys.decodeFromString(HeadwindWidgetSettings.defaultWidgetSettings) } }.distinctUntilChanged() diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt index 3482a6c..832d154 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt @@ -95,12 +95,7 @@ class HeadwindDirectionDataType( } val viewJob = CoroutineScope(Dispatchers.IO).launch { - flow.onCompletion { - // Clear view on completion - val result = glance.compose(context, DpSize.Unspecified) { } - emitter.updateView(result.remoteViews) - } - .collect { streamData -> + flow.collect { streamData -> Log.d(KarooHeadwindExtension.TAG, "Updating headwind direction view") val windSpeed = streamData.windSpeed val windDirection = when (streamData.settings.windDirectionIndicatorSetting){ diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/WeatherDataType.kt b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/WeatherDataType.kt index 6d86755..7b927b0 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/WeatherDataType.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/WeatherDataType.kt @@ -86,11 +86,6 @@ class WeatherDataType( context.streamCurrentWeatherData() .combine(context.streamSettings(karooSystem)) { data, settings -> StreamData(data, settings) } .combine(karooSystem.streamUserProfile()) { data, profile -> data.copy(profile = profile) } - .onCompletion { - // Clear view on completion - val result = glance.compose(context, DpSize.Unspecified) { } - emitter.updateView(result.remoteViews) - } .collect { (data, settings, userProfile) -> Log.d(KarooHeadwindExtension.TAG, "Updating weather view") val interpretation = WeatherInterpretation.fromWeatherCode(data.current.weatherCode) diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/WeatherForecastDataType.kt b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/WeatherForecastDataType.kt index 376fba3..f30416b 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/WeatherForecastDataType.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/WeatherForecastDataType.kt @@ -130,11 +130,6 @@ class WeatherForecastDataType( .combine(context.streamSettings(karooSystem)) { data, settings -> StreamData(data, settings) } .combine(karooSystem.streamUserProfile()) { data, profile -> data.copy(profile = profile) } .combine(context.streamWidgetSettings()) { data, widgetSettings -> data.copy(widgetSettings = widgetSettings) } - .onCompletion { - // Clear view on completion - val result = glance.compose(context, DpSize.Unspecified) { } - emitter.updateView(result.remoteViews) - } .collect { (data, settings, widgetSettings, userProfile) -> Log.d(KarooHeadwindExtension.TAG, "Updating weather view") diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/screens/MainScreen.kt b/app/src/main/kotlin/de/timklge/karooheadwind/screens/MainScreen.kt index 706a194..ea1f024 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/screens/MainScreen.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/screens/MainScreen.kt @@ -32,6 +32,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle import de.timklge.karooheadwind.datatypes.GpsCoordinates import de.timklge.karooheadwind.getGpsCoordinateFlow import de.timklge.karooheadwind.saveSettings @@ -130,7 +131,7 @@ fun MainScreen() { var selectedRoundLocationSetting by remember { mutableStateOf(RoundLocationSetting.KM_2) } val stats by ctx.streamStats().collectAsState(HeadwindStats()) - val location by karooSystem.getGpsCoordinateFlow(ctx).collectAsState(initial = null) + val location by karooSystem.getGpsCoordinateFlow(ctx).collectAsStateWithLifecycle(null) var savedDialogVisible by remember { mutableStateOf(false) }