Skip to content

Commit

Permalink
커스텀 NavHostController 대신 기본 rememberNavController를 활용
Browse files Browse the repository at this point in the history
  • Loading branch information
Pluu committed Sep 9, 2023
1 parent 105416b commit 3af178e
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 35 deletions.
Original file line number Diff line number Diff line change
@@ -1,50 +1,22 @@
package com.pluu.webtoon.navigation.customtabs

import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.runtime.saveable.Saver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.platform.LocalContext
import androidx.core.net.toUri
import androidx.navigation.NavController
import androidx.navigation.NavDeepLinkRequest
import androidx.navigation.NavDestination
import androidx.navigation.NavHostController
import androidx.navigation.NavOptionsBuilder
import androidx.navigation.Navigator
import androidx.navigation.compose.ComposeNavigator
import androidx.navigation.compose.DialogNavigator
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navOptions
import java.net.URLEncoder

@Composable
fun rememberNavController(
vararg navigators: Navigator<out NavDestination>
): NavHostController {
val context = LocalContext.current
return rememberSaveable(inputs = navigators, saver = navControllerSaver(context)) {
createNavController(context)
}.apply {
for (navigator in navigators) {
navigatorProvider.addNavigator(navigator)
}
}
fun rememberWebToonNavController(
navController: NavHostController = rememberNavController()
): NavHostController = navController.apply {
navigatorProvider.addNavigator(ChromeCustomTabsNavigator(context))
}

private fun createNavController(context: Context) =
NavHostController(context).apply {
navigatorProvider.addNavigator(ComposeNavigator())
navigatorProvider.addNavigator(DialogNavigator())
navigatorProvider.addNavigator(ChromeCustomTabsNavigator(context))
}

private fun navControllerSaver(
context: Context
): Saver<NavHostController, *> = Saver(
save = { it.saveState() },
restore = { createNavController(context).apply { restoreState(it) } }
)

fun NavController.navigateChromeCustomTabs(
url: String,
builder: NavOptionsBuilder.() -> Unit = {},
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/pluu/webtoon/ui/NavigationActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import androidx.fragment.app.FragmentActivity
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import com.pluu.compose.runtime.rememberMutableStateOf
import com.pluu.webtoon.model.CurrentSession
import com.pluu.webtoon.navigation.customtabs.rememberNavController
import com.pluu.webtoon.navigation.customtabs.rememberWebToonNavController
import com.pluu.webtoon.ui.compose.WebToonTheme
import com.pluu.webtoon.weekly.model.toCoreType
import com.pluu.webtoon.weekly.model.toUiType
Expand Down Expand Up @@ -45,7 +45,7 @@ class NavigationActivity : FragmentActivity() {

WebToonTheme(isDarkTheme) {
var naviItem by rememberMutableStateOf(session.navi.toUiType())
val navController = rememberNavController()
val navController = rememberWebToonNavController()

AppNavigation(
navController = navController,
Expand Down

0 comments on commit 3af178e

Please sign in to comment.