refactor: move map access under passes

This commit is contained in:
atsunatsu committed 2026-08-22 18:35:53 +08:00
1 parent d8f60cf270
commit cebe3b7ec4
4 files changed
+23 -17

No files matched your search

@@ -132,8 +132,12 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) {
val backStack = rememberNavBackStack(Screen.Passes) val backStack = rememberNavBackStack(Screen.Passes)
val currentKey = backStack.lastOrNull() val currentKey = backStack.lastOrNull()
val navigateBack: () -> Unit = { backStack.removeLastOrNull() } 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 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 context = LocalContext.current
val container = (context.applicationContext as IContainerProvider).getMainContainer() val container = (context.applicationContext as IContainerProvider).getMainContainer()
@@ -157,9 +161,9 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) {
val isSelected = when (currentKey) { val isSelected = when (currentKey) {
is Screen.Satellites -> screen is Screen.Satellites is Screen.Satellites -> screen is Screen.Satellites
is Screen.Passes -> screen is Screen.Passes is Screen.Passes -> screen is Screen.Passes
is Screen.Mutual -> screen is Screen.Mutual is Screen.Map -> screen is Screen.Passes
is Screen.Map -> screen is Screen.Map
is Screen.AMSAT -> screen is Screen.AMSAT is Screen.AMSAT -> screen is Screen.AMSAT
is Screen.Mutual -> screen is Screen.Mutual
is Screen.Settings -> screen is Screen.Settings is Screen.Settings -> screen is Screen.Settings
else -> false else -> false
} }
@@ -168,7 +172,7 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) {
label = { Text(stringResource(screen.titleResId)) }, label = { Text(stringResource(screen.titleResId)) },
selected = isSelected, selected = isSelected,
onClick = { 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) while (backStack.size > 1) backStack.removeAt(backStack.size - 1)
if (screen !is Screen.Passes) backStack.add(screen) if (screen !is Screen.Passes) backStack.add(screen)
} }
@@ -203,11 +207,14 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) {
SatellitesDestination(navigateUp = navigateBack) SatellitesDestination(navigateUp = navigateBack)
} }
entry<Screen.Passes> { entry<Screen.Passes> {
PassesDestination { catNum, aosTime -> PassesDestination(
navigateToRadar = { catNum, aosTime ->
container.setMutualPassData(MutualPassData()) container.setMutualPassData(MutualPassData())
container.satelliteRepo.selectPass(catNum, aosTime) container.satelliteRepo.selectPass(catNum, aosTime)
navigateToRadar() navigateToRadar()
} },
navigateToMap = navigateToMap
)
} }
entry<Screen.Map> { entry<Screen.Map> {
MapDestination() MapDestination()
@@ -215,7 +222,6 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) {
entry<Screen.Mutual> { entry<Screen.Mutual> {
MutualScreen( MutualScreen(
viewModel = mutualViewModel, viewModel = mutualViewModel,
navigateUp = navigateBack,
navigateToRadar = { catNum, aosTime, pass -> navigateToRadar = { catNum, aosTime, pass ->
container.setMutualPassData(pass ?: MutualPassData()) container.setMutualPassData(pass ?: MutualPassData())
container.satelliteRepo.selectPass(catNum, aosTime) container.satelliteRepo.selectPass(catNum, aosTime)
@@ -63,7 +63,6 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.rtbishop.look4sat.core.domain.repository.MutualPassData import com.rtbishop.look4sat.core.domain.repository.MutualPassData
import com.rtbishop.look4sat.core.domain.repository.TrackSampleData 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.R
import com.rtbishop.look4sat.core.presentation.ScreenColumn import com.rtbishop.look4sat.core.presentation.ScreenColumn
import com.rtbishop.look4sat.core.presentation.TopBar import com.rtbishop.look4sat.core.presentation.TopBar
@@ -75,7 +74,6 @@ import java.util.Locale
@Composable @Composable
fun MutualScreen( fun MutualScreen(
viewModel: MutualViewModel, viewModel: MutualViewModel,
navigateUp: () -> Unit = {},
navigateToRadar: (Int, Long, MutualPassData?) -> Unit = { _, _, _ -> }, navigateToRadar: (Int, Long, MutualPassData?) -> Unit = { _, _, _ -> },
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
@@ -85,9 +83,7 @@ fun MutualScreen(
topBar = { isVertical -> topBar = { isVertical ->
TopBar( TopBar(
isVerticalLayout = isVertical, isVerticalLayout = isVertical,
startAction = { startAction = {},
IconCard(action = navigateUp, resId = R.drawable.ic_back)
},
topInfo = { topInfo = {
Text( Text(
text = stringResource(R.string.mutual_title), text = stringResource(R.string.mutual_title),
@@ -84,19 +84,23 @@ import java.util.Locale
import java.util.TimeZone import java.util.TimeZone
@Composable @Composable
fun PassesDestination(navigateToRadar: (Int, Long) -> Unit) { fun PassesDestination(
navigateToRadar: (Int, Long) -> Unit,
navigateToMap: () -> Unit
) {
val context = LocalContext.current val context = LocalContext.current
val container = (context.applicationContext as IContainerProvider).getMainContainer() val container = (context.applicationContext as IContainerProvider).getMainContainer()
val viewModel: PassesViewModel = viewModel(factory = PassesViewModel.factory(container)) val viewModel: PassesViewModel = viewModel(factory = PassesViewModel.factory(container))
val uiState = viewModel.uiState.collectAsStateWithLifecycle().value val uiState = viewModel.uiState.collectAsStateWithLifecycle().value
PassesScreen(uiState, viewModel::onAction, navigateToRadar) PassesScreen(uiState, viewModel::onAction, navigateToRadar, navigateToMap)
} }
@Composable @Composable
private fun PassesScreen( private fun PassesScreen(
uiState: PassesState, uiState: PassesState,
onAction: (PassesAction) -> Unit, onAction: (PassesAction) -> Unit,
navigateToRadar: (Int, Long) -> Unit navigateToRadar: (Int, Long) -> Unit,
navigateToMap: () -> Unit
) { ) {
if (uiState.isPassesDialogShown) { if (uiState.isPassesDialogShown) {
PassesFilterDialog( PassesFilterDialog(
@@ -163,7 +167,7 @@ private fun PassesScreen(
NextPassRow(pass = uiState.nextPass, isUtc = uiState.isUtc) NextPassRow(pass = uiState.nextPass, isUtc = uiState.isUtc)
}, },
endAction = { endAction = {
IconCard(action = { onAction(PassesAction.ToggleRadiosDialog) }, resId = R.drawable.ic_radios) IconCard(action = navigateToMap, resId = R.drawable.ic_map)
} }
) )
} }
+1 -1
View File
@@ -2,7 +2,7 @@
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
appVersionCode = "446" appVersionCode = "446"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
appVersionName = "4.4.6-ba7opf.1" appVersionName = "4.4.6-ba7opf.2"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
compileSdk = "37" compileSdk = "37"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry