diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/ForecastDataType.kt b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/ForecastDataType.kt index 2203519..4199186 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/ForecastDataType.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/ForecastDataType.kt @@ -39,6 +39,7 @@ import de.timklge.karooheadwind.streamSettings import de.timklge.karooheadwind.streamUpcomingRoute import de.timklge.karooheadwind.streamUserProfile import de.timklge.karooheadwind.streamWidgetSettings +import de.timklge.karooheadwind.throttle import io.hammerhead.karooext.KarooSystemService import io.hammerhead.karooext.extension.DataTypeImpl import io.hammerhead.karooext.internal.ViewEmitter @@ -52,6 +53,7 @@ import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch @@ -59,6 +61,7 @@ import java.time.Instant import java.time.ZoneId import java.time.format.DateTimeFormatter import java.time.temporal.ChronoUnit +import kotlin.math.abs import kotlin.math.roundToInt abstract class ForecastDataType(private val karooSystem: KarooSystemService, typeId: String) : DataTypeImpl("karoo-headwind", typeId) { @@ -191,8 +194,16 @@ abstract class ForecastDataType(private val karooSystem: KarooSystemService, typ context.streamCurrentForecastWeatherData(), settingsAndProfileStream, context.streamWidgetSettings(), - karooSystem.getHeadingFlow(context), - karooSystem.streamUpcomingRoute() + karooSystem.getHeadingFlow(context).throttle(60_000L), + karooSystem.streamUpcomingRoute().distinctUntilChanged { old, new -> + val oldDistance = old?.distanceAlongRoute + val newDistance = new?.distanceAlongRoute + + if (oldDistance == null && newDistance == null) return@distinctUntilChanged true + if (oldDistance == null || newDistance == null) return@distinctUntilChanged false + + abs(oldDistance - newDistance) < 100 + } ) { weatherData, settings, widgetSettings, heading, upcomingRoute -> StreamData( data = weatherData, diff --git a/app/src/main/res/drawable/arrow_0.png b/app/src/main/res/drawable/arrow_0.png index a2013b4..c501765 100644 Binary files a/app/src/main/res/drawable/arrow_0.png and b/app/src/main/res/drawable/arrow_0.png differ diff --git a/app/src/main/res/drawable/bx_clear.png b/app/src/main/res/drawable/bx_clear.png index b678517..09b07e3 100644 Binary files a/app/src/main/res/drawable/bx_clear.png and b/app/src/main/res/drawable/bx_clear.png differ diff --git a/app/src/main/res/drawable/bx_cloud.png b/app/src/main/res/drawable/bx_cloud.png index 570dac0..e11ed40 100644 Binary files a/app/src/main/res/drawable/bx_cloud.png and b/app/src/main/res/drawable/bx_cloud.png differ diff --git a/app/src/main/res/drawable/bx_cloud_drizzle.png b/app/src/main/res/drawable/bx_cloud_drizzle.png index 85473c0..2c10157 100644 Binary files a/app/src/main/res/drawable/bx_cloud_drizzle.png and b/app/src/main/res/drawable/bx_cloud_drizzle.png differ diff --git a/app/src/main/res/drawable/bx_cloud_light_rain.png b/app/src/main/res/drawable/bx_cloud_light_rain.png index 6f267fe..79a94a9 100644 Binary files a/app/src/main/res/drawable/bx_cloud_light_rain.png and b/app/src/main/res/drawable/bx_cloud_light_rain.png differ diff --git a/app/src/main/res/drawable/bx_cloud_lightning.png b/app/src/main/res/drawable/bx_cloud_lightning.png index c3aed00..7ad42be 100644 Binary files a/app/src/main/res/drawable/bx_cloud_lightning.png and b/app/src/main/res/drawable/bx_cloud_lightning.png differ diff --git a/app/src/main/res/drawable/bx_cloud_rain.png b/app/src/main/res/drawable/bx_cloud_rain.png index 37741b2..2e5f765 100644 Binary files a/app/src/main/res/drawable/bx_cloud_rain.png and b/app/src/main/res/drawable/bx_cloud_rain.png differ diff --git a/app/src/main/res/drawable/bx_cloud_snow.png b/app/src/main/res/drawable/bx_cloud_snow.png index 947dab5..e63300c 100644 Binary files a/app/src/main/res/drawable/bx_cloud_snow.png and b/app/src/main/res/drawable/bx_cloud_snow.png differ diff --git a/app/src/main/res/drawable/droplet_regular.png b/app/src/main/res/drawable/droplet_regular.png index 1e579f7..3a223bb 100644 Binary files a/app/src/main/res/drawable/droplet_regular.png and b/app/src/main/res/drawable/droplet_regular.png differ diff --git a/app/src/main/res/drawable/question_mark_regular_240.png b/app/src/main/res/drawable/question_mark_regular_240.png index 91f9a34..58c4678 100644 Binary files a/app/src/main/res/drawable/question_mark_regular_240.png and b/app/src/main/res/drawable/question_mark_regular_240.png differ diff --git a/app/src/main/res/drawable/thermometer.png b/app/src/main/res/drawable/thermometer.png index 925d9f1..7c73043 100644 Binary files a/app/src/main/res/drawable/thermometer.png and b/app/src/main/res/drawable/thermometer.png differ diff --git a/app/src/main/res/drawable/water_regular.png b/app/src/main/res/drawable/water_regular.png index 2059262..0a86b1c 100644 Binary files a/app/src/main/res/drawable/water_regular.png and b/app/src/main/res/drawable/water_regular.png differ diff --git a/app/src/main/res/drawable/wind.png b/app/src/main/res/drawable/wind.png index 9461f5b..46b5159 100644 Binary files a/app/src/main/res/drawable/wind.png and b/app/src/main/res/drawable/wind.png differ