@@ -13,6 +13,7 @@ import androidx.compose.ui.platform.LocalContext
1313import androidx.core.net.toUri
1414import androidx.lifecycle.viewmodel.navigation3.rememberViewModelStoreNavEntryDecorator
1515import androidx.navigation3.runtime.EntryProviderScope
16+ import androidx.navigation3.runtime.NavEntryDecorator
1617import androidx.navigation3.runtime.entryProvider
1718import androidx.navigation3.runtime.rememberSaveableStateHolderNavEntryDecorator
1819import androidx.navigation3.ui.NavDisplay
@@ -26,6 +27,7 @@ import com.pluu.webtoon.ui.model.PalletColor
2627import com.pluu.webtoon.weekly.model.UI_NAV_ITEM
2728import com.pluu.webtoon.weekly.ui.weekly.WeeklyUi
2829import kotlinx.serialization.Serializable
30+ import timber.log.Timber
2931
3032@Serializable
3133sealed interface Screen {
@@ -67,7 +69,8 @@ internal fun AppNavigation(
6769 onBack = { backStack.removeLastOrNull() },
6870 entryDecorators = listOf (
6971 rememberSaveableStateHolderNavEntryDecorator(),
70- rememberViewModelStoreNavEntryDecorator()
72+ rememberViewModelStoreNavEntryDecorator(),
73+ themeNavEntryDecorator(updateTheme)
7174 ),
7275 modifier = modifier,
7376 entryProvider = entryProvider {
@@ -115,26 +118,22 @@ internal fun AppNavigation(
115118 )
116119 }
117120 )
121+ }
122+
123+ @Composable
124+ internal fun themeNavEntryDecorator (
125+ updateTheme : (Boolean ) -> Unit
126+ ) = NavEntryDecorator <Any > { entry ->
127+ Timber .tag(" Logger" ).d(" [Destination] $entry " )
128+ updateTheme(
129+ when (entry.contentKey) {
130+ Screen .Setting ::class .java.simpleName,
131+ Screen .License ::class .java.simpleName -> false
118132
119- // TODO: 테마 업데이트 대응
120- // DisposableEffect(navController) {
121- // val listener = NavController.OnDestinationChangedListener { _, destination, _ ->
122- // Timber.tag("Logger").d("[Destination] ${destination.route}")
123- // updateTheme(
124- // when (destination.route) {
125- // Screen.Setting::class.java.canonicalName,
126- // Screen.License::class.java.canonicalName -> false
127- //
128- // else -> true
129- // }
130- // )
131- // }
132- // navController.addOnDestinationChangedListener(listener)
133- //
134- // onDispose {
135- // navController.removeOnDestinationChangedListener(listener)
136- // }
137- // }
133+ else -> true
134+ }
135+ )
136+ entry.Content ()
138137}
139138
140139@Composable
0 commit comments