From cebe3b7ec4c61e0f23b5658d2860cd3e3f6c3d35 Mon Sep 17 00:00:00 2001 From: atsunatsu Date: Sat, 22 Aug 2026 18:35:53 +0800 Subject: [PATCH] refactor: move map access under passes --- .../java/com/rtbishop/look4sat/MainScreen.kt | 26 ++++++++++++------- .../look4sat/feature/mutual/MutualScreen.kt | 6 +---- .../look4sat/feature/passes/PassesScreen.kt | 12 ++++++--- gradle/libs.versions.toml | 2 +- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/rtbishop/look4sat/MainScreen.kt b/app/src/main/java/com/rtbishop/look4sat/MainScreen.kt index a7b949d5..23013615 100644 --- a/app/src/main/java/com/rtbishop/look4sat/MainScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/MainScreen.kt @@ -132,8 +132,12 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) { val backStack = rememberNavBackStack(Screen.Passes) val currentKey = backStack.lastOrNull() val navigateBack: () -> Unit = { backStack.removeLastOrNull() } + val navigateToMap: () -> Unit = { + while (backStack.size > 1) backStack.removeAt(backStack.size - 1) + backStack.add(Screen.Map) + } val fadeTransition = fadeIn(animationSpec = tween(350)) togetherWith fadeOut(animationSpec = tween(350)) - val navItems = listOf(Screen.Satellites, Screen.Passes, Screen.Mutual, Screen.Map, Screen.AMSAT, Screen.Settings) + val navItems = listOf(Screen.Satellites, Screen.Passes, Screen.AMSAT, Screen.Mutual, Screen.Settings) val context = LocalContext.current val container = (context.applicationContext as IContainerProvider).getMainContainer() @@ -157,9 +161,9 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) { val isSelected = when (currentKey) { is Screen.Satellites -> screen is Screen.Satellites is Screen.Passes -> screen is Screen.Passes - is Screen.Mutual -> screen is Screen.Mutual - is Screen.Map -> screen is Screen.Map + is Screen.Map -> screen is Screen.Passes is Screen.AMSAT -> screen is Screen.AMSAT + is Screen.Mutual -> screen is Screen.Mutual is Screen.Settings -> screen is Screen.Settings else -> false } @@ -168,7 +172,7 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) { label = { Text(stringResource(screen.titleResId)) }, selected = isSelected, onClick = { - if (isSelected) return@item + if (isSelected && !(currentKey is Screen.Map && screen is Screen.Passes)) return@item while (backStack.size > 1) backStack.removeAt(backStack.size - 1) if (screen !is Screen.Passes) backStack.add(screen) } @@ -203,11 +207,14 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) { SatellitesDestination(navigateUp = navigateBack) } entry { - PassesDestination { catNum, aosTime -> - container.setMutualPassData(MutualPassData()) - container.satelliteRepo.selectPass(catNum, aosTime) - navigateToRadar() - } + PassesDestination( + navigateToRadar = { catNum, aosTime -> + container.setMutualPassData(MutualPassData()) + container.satelliteRepo.selectPass(catNum, aosTime) + navigateToRadar() + }, + navigateToMap = navigateToMap + ) } entry { MapDestination() @@ -215,7 +222,6 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) { entry { MutualScreen( viewModel = mutualViewModel, - navigateUp = navigateBack, navigateToRadar = { catNum, aosTime, pass -> container.setMutualPassData(pass ?: MutualPassData()) container.satelliteRepo.selectPass(catNum, aosTime) diff --git a/feature/mutual/src/main/java/com/rtbishop/look4sat/feature/mutual/MutualScreen.kt b/feature/mutual/src/main/java/com/rtbishop/look4sat/feature/mutual/MutualScreen.kt index efd774cd..ebc41802 100644 --- a/feature/mutual/src/main/java/com/rtbishop/look4sat/feature/mutual/MutualScreen.kt +++ b/feature/mutual/src/main/java/com/rtbishop/look4sat/feature/mutual/MutualScreen.kt @@ -63,7 +63,6 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.rtbishop.look4sat.core.domain.repository.MutualPassData import com.rtbishop.look4sat.core.domain.repository.TrackSampleData -import com.rtbishop.look4sat.core.presentation.IconCard import com.rtbishop.look4sat.core.presentation.R import com.rtbishop.look4sat.core.presentation.ScreenColumn import com.rtbishop.look4sat.core.presentation.TopBar @@ -75,7 +74,6 @@ import java.util.Locale @Composable fun MutualScreen( viewModel: MutualViewModel, - navigateUp: () -> Unit = {}, navigateToRadar: (Int, Long, MutualPassData?) -> Unit = { _, _, _ -> }, modifier: Modifier = Modifier ) { @@ -85,9 +83,7 @@ fun MutualScreen( topBar = { isVertical -> TopBar( isVerticalLayout = isVertical, - startAction = { - IconCard(action = navigateUp, resId = R.drawable.ic_back) - }, + startAction = {}, topInfo = { Text( text = stringResource(R.string.mutual_title), 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 82a5bdc3..5ac53745 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 @@ -84,19 +84,23 @@ import java.util.Locale import java.util.TimeZone @Composable -fun PassesDestination(navigateToRadar: (Int, Long) -> Unit) { +fun PassesDestination( + navigateToRadar: (Int, Long) -> Unit, + navigateToMap: () -> Unit +) { val context = LocalContext.current val container = (context.applicationContext as IContainerProvider).getMainContainer() val viewModel: PassesViewModel = viewModel(factory = PassesViewModel.factory(container)) val uiState = viewModel.uiState.collectAsStateWithLifecycle().value - PassesScreen(uiState, viewModel::onAction, navigateToRadar) + PassesScreen(uiState, viewModel::onAction, navigateToRadar, navigateToMap) } @Composable private fun PassesScreen( uiState: PassesState, onAction: (PassesAction) -> Unit, - navigateToRadar: (Int, Long) -> Unit + navigateToRadar: (Int, Long) -> Unit, + navigateToMap: () -> Unit ) { if (uiState.isPassesDialogShown) { PassesFilterDialog( @@ -163,7 +167,7 @@ private fun PassesScreen( NextPassRow(pass = uiState.nextPass, isUtc = uiState.isUtc) }, endAction = { - IconCard(action = { onAction(PassesAction.ToggleRadiosDialog) }, resId = R.drawable.ic_radios) + IconCard(action = navigateToMap, resId = R.drawable.ic_map) } ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 206319d7..1c4a9334 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ #noinspection UnusedVersionCatalogEntry appVersionCode = "446" #noinspection UnusedVersionCatalogEntry -appVersionName = "4.4.6-ba7opf.1" +appVersionName = "4.4.6-ba7opf.2" #noinspection UnusedVersionCatalogEntry compileSdk = "37" #noinspection UnusedVersionCatalogEntry