From c5e029178957c8335f39c0f3608c94949d4f388f Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Wed, 5 Apr 2023 21:57:29 +0300 Subject: [PATCH] Fixed recomposition logic when toggling favorites filter --- .../sadellie/unitto/feature/unitslist/LeftSideScreen.kt | 9 ++++++--- .../feature/unitslist/navigation/UnitsListNavigation.kt | 4 +--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/LeftSideScreen.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/LeftSideScreen.kt index dbd93f60..19d47686 100644 --- a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/LeftSideScreen.kt +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/LeftSideScreen.kt @@ -64,7 +64,7 @@ import com.sadellie.unitto.feature.unitslist.components.UnitListItem @Composable internal fun LeftSideScreen( viewModel: UnitsListViewModel, - currentUnitId: String, + currentUnitId: String?, navigateUp: () -> Unit, navigateToSettingsAction: () -> Unit, selectAction: (AbstractUnit) -> Unit @@ -142,8 +142,11 @@ internal fun LeftSideScreen( } } - // This block is called only once on initial composition - LaunchedEffect(uiState.value.shownUnitGroups) { + LaunchedEffect(uiState.value.shownUnitGroups, currentUnitId) { + if (currentUnitId == null) return@LaunchedEffect + // This is still wrong, but works good enough. + // Ideally we shouldn't use uiState.value.shownUnitGroups + viewModel.setSelectedChip(currentUnitId) val groupToSelect = uiState.value.shownUnitGroups.indexOf(uiState.value.chosenUnitGroup) if (groupToSelect > -1) { chipsRowLazyListState.animateScrollToItem(groupToSelect) diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/navigation/UnitsListNavigation.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/navigation/UnitsListNavigation.kt index b7476331..8ad4d065 100644 --- a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/navigation/UnitsListNavigation.kt +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/navigation/UnitsListNavigation.kt @@ -50,11 +50,9 @@ fun NavGraphBuilder.leftScreen( composable( route = "$leftSideRoute/{$unitFromIdArg}" ) { - val unitFromId = it.arguments?.getString(unitFromIdArg) ?: return@composable - viewModel.setSelectedChip(unitFromId) LeftSideScreen( viewModel = viewModel, - currentUnitId = unitFromId, + currentUnitId = it.arguments?.getString(unitFromIdArg), navigateUp = navigateUp, navigateToSettingsAction = navigateToUnitGroups, selectAction = onSelect