From 8fbfcb371286ebc54865c9bdb19ac045cfe175b4 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Wed, 5 Aug 2026 13:03:00 +0200 Subject: [PATCH] v4.4.5 - Pass progress hotfix, swapped modes/filter dialogs --- .../com/rtbishop/look4sat/feature/passes/PassesScreen.kt | 4 ++-- .../rtbishop/look4sat/feature/passes/PassesViewModel.kt | 7 ++++--- gradle/libs.versions.toml | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/feature/passes/src/main/java/com/rtbishop/look4sat/feature/passes/PassesScreen.kt b/feature/passes/src/main/java/com/rtbishop/look4sat/feature/passes/PassesScreen.kt index b39aa06c..257d6a72 100644 --- a/feature/passes/src/main/java/com/rtbishop/look4sat/feature/passes/PassesScreen.kt +++ b/feature/passes/src/main/java/com/rtbishop/look4sat/feature/passes/PassesScreen.kt @@ -156,7 +156,7 @@ private fun PassesScreen( TopBar( isVerticalLayout = isVerticalLayout, startAction = { - IconCard(action = { onAction(PassesAction.TogglePassesDialog) }, resId = R.drawable.ic_filter) + IconCard(action = { onAction(PassesAction.ToggleRadiosDialog) }, resId = R.drawable.ic_radios) }, topInfo = { TimerRow(timeString = uiState.nextTime, isTimeAos = uiState.isNextTimeAos) @@ -165,7 +165,7 @@ private fun PassesScreen( NextPassRow(pass = uiState.nextPass, isUtc = uiState.isUtc) }, endAction = { - IconCard(action = { onAction(PassesAction.ToggleRadiosDialog) }, resId = R.drawable.ic_radios) + IconCard(action = { onAction(PassesAction.TogglePassesDialog) }, resId = R.drawable.ic_filter) } ) } diff --git a/feature/passes/src/main/java/com/rtbishop/look4sat/feature/passes/PassesViewModel.kt b/feature/passes/src/main/java/com/rtbishop/look4sat/feature/passes/PassesViewModel.kt index 39d2459e..08d3d3ac 100644 --- a/feature/passes/src/main/java/com/rtbishop/look4sat/feature/passes/PassesViewModel.kt +++ b/feature/passes/src/main/java/com/rtbishop/look4sat/feature/passes/PassesViewModel.kt @@ -106,17 +106,18 @@ class PassesViewModel( .collectLatest { (allPasses, isUtc, showDeepSpace) -> val filtered = if (showDeepSpace) allPasses else allPasses.filter { !it.isDeepSpace } - // Expensive: recompute once per pass-list/UTC change, not every second + // Expensive: recompute sun times once per items/UTC change, not every second val sunTimes = computeSunTimes(filtered, isUtc) - val grouped = groupPasses(filtered, isUtc) - _uiState.update { it.copy(sunTimes = sunTimes, groupedPasses = grouped) } + _uiState.update { it.copy(sunTimes = sunTimes) } while (isActive) { val timeNow = System.currentTimeMillis() val processed = computePassProgress(filtered, timeNow) + val grouped = groupPasses(processed, isUtc) val (nextPass, nextTime, isAos) = resolveNextPass(processed, timeNow) _uiState.update { it.copy( itemsList = processed, + groupedPasses = grouped, nextPass = nextPass, nextTime = nextTime, isNextTimeAos = isAos diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cd816a80..5f63642f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,8 @@ [versions] #noinspection UnusedVersionCatalogEntry -appVersionCode = "444" +appVersionCode = "445" #noinspection UnusedVersionCatalogEntry -appVersionName = "4.4.4" +appVersionName = "4.4.5" #noinspection UnusedVersionCatalogEntry compileSdk = "37" #noinspection UnusedVersionCatalogEntry