File tree Expand file tree Collapse file tree
core/navigation/src/main/java/com/neki/android/core/navigation Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ fun <T : Any> rememberHiltSharedViewModelStoreNavEntryDecorator(
5151 * hiltViewModel()과 함께 사용 가능.
5252 */
5353class HiltSharedViewModelStoreNavEntryDecorator <T : Any >(
54- viewModelStore : ViewModelStore ,
54+ private val viewModelStore : ViewModelStore ,
5555 removeViewModelStoreOnPop : () -> Boolean ,
5656) : NavEntryDecorator<T>(
5757 onPop = { key ->
@@ -95,6 +95,10 @@ class HiltSharedViewModelStoreNavEntryDecorator<T : Any>(
9595 }
9696 },
9797) {
98+ fun clearAll () {
99+ viewModelStore.getHiltEntryViewModel().clearAll()
100+ }
101+
98102 companion object {
99103 private const val PARENT_CONTENT_KEY = " hilt_shared_decorator_parent_content_key"
100104
@@ -116,6 +120,11 @@ private class HiltEntryViewModel : ViewModel() {
116120 owners.remove(key)?.clear()
117121 }
118122
123+ fun clearAll () {
124+ owners.forEach { (_, store) -> store.clear() }
125+ owners.clear()
126+ }
127+
119128 override fun onCleared () {
120129 owners.forEach { (_, store) -> store.clear() }
121130 }
Original file line number Diff line number Diff line change 11package com.neki.android.core.navigation
22
33import androidx.compose.runtime.Composable
4+ import androidx.compose.runtime.DisposableEffect
45import androidx.compose.runtime.derivedStateOf
56import androidx.compose.runtime.getValue
67import androidx.compose.runtime.mutableStateListOf
@@ -32,11 +33,12 @@ class NavigationState @Inject constructor(
3233fun NavigationState.toEntries (
3334 entryProvider : (NavKey ) -> NavEntry <NavKey >,
3435): SnapshotStateList <NavEntry <NavKey >> {
36+ val hvmd = rememberHiltSharedViewModelStoreNavEntryDecorator<NavKey >()
3537 val decoratedEntries = subStacks.mapValues { (_, stack) ->
3638 val decorators = listOf (
3739 rememberSaveableStateHolderNavEntryDecorator<NavKey >(),
3840 rememberViewModelStoreNavEntryDecorator<NavKey >(),
39- rememberHiltSharedViewModelStoreNavEntryDecorator() ,
41+ hvmd ,
4042 )
4143 rememberDecoratedNavEntries(
4244 backStack = stack,
@@ -45,6 +47,12 @@ fun NavigationState.toEntries(
4547 )
4648 }
4749
50+ DisposableEffect (Unit ) {
51+ onDispose {
52+ hvmd.clearAll()
53+ }
54+ }
55+
4856 return topLevelStack
4957 .flatMap { decoratedEntries[it] ? : emptyList() }
5058 .toMutableStateList()
Original file line number Diff line number Diff line change 11package com.neki.android.core.navigation.auth
22
33import androidx.compose.runtime.Composable
4+ import androidx.compose.runtime.DisposableEffect
45import androidx.compose.runtime.derivedStateOf
56import androidx.compose.runtime.getValue
67import androidx.compose.runtime.mutableStateListOf
@@ -25,11 +26,19 @@ class AuthNavigationState @Inject constructor(
2526fun AuthNavigationState.toEntries (
2627 entryProvider : (NavKey ) -> NavEntry <NavKey >,
2728): SnapshotStateList <NavEntry <NavKey >> {
29+ val hvmd = rememberHiltSharedViewModelStoreNavEntryDecorator<NavKey >()
2830 val decorators = listOf (
2931 rememberSaveableStateHolderNavEntryDecorator<NavKey >(),
3032 rememberViewModelStoreNavEntryDecorator<NavKey >(),
31- rememberHiltSharedViewModelStoreNavEntryDecorator() ,
33+ hvmd ,
3234 )
35+
36+ DisposableEffect (Unit ) {
37+ onDispose {
38+ hvmd.clearAll()
39+ }
40+ }
41+
3342 return rememberDecoratedNavEntries(
3443 backStack = stack,
3544 entryDecorators = decorators,
You can’t perform that action at this time.
0 commit comments