in JetNews/app/src/main/java/com/example/jetnews/ui/JetnewsApp.kt [50:115]
fun JetnewsApp(
appContainer: AppContainer,
windowSize: WindowSize
) {
JetnewsTheme {
ProvideWindowInsets {
val systemUiController = rememberSystemUiController()
val darkIcons = MaterialTheme.colors.isLight
SideEffect {
systemUiController.setSystemBarsColor(Color.Transparent, darkIcons = darkIcons)
}
val navController = rememberNavController()
val navigationActions = remember(navController) {
JetnewsNavigationActions(navController)
}
val coroutineScope = rememberCoroutineScope()
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentRoute =
navBackStackEntry?.destination?.route ?: JetnewsDestinations.HOME_ROUTE
val isExpandedScreen = windowSize == WindowSize.Expanded
val sizeAwareDrawerState = rememberSizeAwareDrawerState(isExpandedScreen)
ModalDrawer(
drawerContent = {
AppDrawer(
currentRoute = currentRoute,
navigateToHome = navigationActions.navigateToHome,
navigateToInterests = navigationActions.navigateToInterests,
closeDrawer = { coroutineScope.launch { sizeAwareDrawerState.close() } },
modifier = Modifier
.statusBarsPadding()
.navigationBarsPadding()
)
},
drawerState = sizeAwareDrawerState,
// Only enable opening the drawer via gestures if the screen is not expanded
gesturesEnabled = !isExpandedScreen
) {
Row(
Modifier
.fillMaxSize()
.statusBarsPadding()
.navigationBarsPadding(bottom = false)
) {
if (isExpandedScreen) {
AppNavRail(
currentRoute = currentRoute,
navigateToHome = navigationActions.navigateToHome,
navigateToInterests = navigationActions.navigateToInterests,
)
}
JetnewsNavGraph(
appContainer = appContainer,
isExpandedScreen = isExpandedScreen,
navController = navController,
openDrawer = { coroutineScope.launch { sizeAwareDrawerState.open() } },
)
}
}
}
}
}