wrap homescreen in route

This commit is contained in:
brreynie 2023-04-22 22:28:46 +02:00
parent 05c37b4168
commit 8fc4ac8cf1
4 changed files with 55 additions and 30 deletions

View file

@ -2,7 +2,13 @@ package be.ugent.sel.studeez
import android.content.res.Resources import android.content.res.Resources
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.* import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.ScaffoldState
import androidx.compose.material.Snackbar
import androidx.compose.material.SnackbarHost
import androidx.compose.material.Surface
import androidx.compose.material.rememberScaffoldState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -11,6 +17,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavGraphBuilder import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
@ -18,11 +25,11 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import be.ugent.sel.studeez.common.snackbar.SnackbarManager import be.ugent.sel.studeez.common.snackbar.SnackbarManager
import be.ugent.sel.studeez.navigation.StudeezDestinations import be.ugent.sel.studeez.navigation.StudeezDestinations
import be.ugent.sel.studeez.screens.home.HomeScreen import be.ugent.sel.studeez.screens.home.HomeRoute
import be.ugent.sel.studeez.screens.log_in.LoginScreen import be.ugent.sel.studeez.screens.log_in.LoginScreen
import be.ugent.sel.studeez.screens.session.SessionScreen
import be.ugent.sel.studeez.screens.profile.EditProfileScreen import be.ugent.sel.studeez.screens.profile.EditProfileScreen
import be.ugent.sel.studeez.screens.profile.ProfileScreen import be.ugent.sel.studeez.screens.profile.ProfileScreen
import be.ugent.sel.studeez.screens.session.SessionScreen
import be.ugent.sel.studeez.screens.sign_up.SignUpScreen import be.ugent.sel.studeez.screens.sign_up.SignUpScreen
import be.ugent.sel.studeez.screens.splash.SplashScreen import be.ugent.sel.studeez.screens.splash.SplashScreen
import be.ugent.sel.studeez.screens.timer_overview.TimerOverviewScreen import be.ugent.sel.studeez.screens.timer_overview.TimerOverviewScreen
@ -85,12 +92,12 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) {
appState.popUp() appState.popUp()
} }
val open: (String) -> Unit = { val open: (String) -> Unit = { route ->
route -> appState.navigate(route) appState.navigate(route)
} }
val openAndPopUp: (String, String) -> Unit = { val openAndPopUp: (String, String) -> Unit = { route, popUp ->
route, popUp -> appState.navigateAndPopUp(route, popUp) appState.navigateAndPopUp(route, popUp)
} }
composable(StudeezDestinations.SPLASH_SCREEN) { composable(StudeezDestinations.SPLASH_SCREEN) {
@ -106,7 +113,7 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) {
} }
composable(StudeezDestinations.HOME_SCREEN) { composable(StudeezDestinations.HOME_SCREEN) {
HomeScreen(open, openAndPopUp) HomeRoute(open, openAndPopUp, viewModel = hiltViewModel())
} }
// TODO Tasks screen // TODO Tasks screen
@ -123,7 +130,7 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) {
composable(StudeezDestinations.SESSION_SCREEN) { composable(StudeezDestinations.SESSION_SCREEN) {
SessionScreen(open, openAndPopUp) SessionScreen(open, openAndPopUp)
} }
// TODO Timers screen // TODO Timers screen
// TODO Settings screen // TODO Settings screen

View file

@ -31,6 +31,20 @@ data class DrawerActions(
val onAboutClick: () -> Unit, val onAboutClick: () -> Unit,
) )
fun getDrawerActions(
drawerViewModel: DrawerViewModel,
open: (String) -> Unit,
openAndPopUp: (String, String) -> Unit,
): DrawerActions {
return DrawerActions(
onHomeButtonClick = { drawerViewModel.onHomeButtonClick(open) },
onTimersClick = { drawerViewModel.onTimersClick(open) },
onSettingsClick = { drawerViewModel.onSettingsClick(open) },
onLogoutClick = { drawerViewModel.onLogoutClick(openAndPopUp) },
onAboutClick = { drawerViewModel.onAboutClick(open) },
)
}
@Composable @Composable
fun Drawer( fun Drawer(
drawerActions: DrawerActions, drawerActions: DrawerActions,

View file

@ -15,8 +15,10 @@ import be.ugent.sel.studeez.common.ext.basicButton
import be.ugent.sel.studeez.resources import be.ugent.sel.studeez.resources
import be.ugent.sel.studeez.screens.drawer.DrawerActions import be.ugent.sel.studeez.screens.drawer.DrawerActions
import be.ugent.sel.studeez.screens.drawer.DrawerViewModel import be.ugent.sel.studeez.screens.drawer.DrawerViewModel
import be.ugent.sel.studeez.screens.drawer.getDrawerActions
import be.ugent.sel.studeez.screens.navbar.NavigationBarActions import be.ugent.sel.studeez.screens.navbar.NavigationBarActions
import be.ugent.sel.studeez.screens.navbar.NavigationBarViewModel import be.ugent.sel.studeez.screens.navbar.NavigationBarViewModel
import be.ugent.sel.studeez.screens.navbar.getNavigationBarActions
@Composable @Composable
fun HomeRoute( fun HomeRoute(
@ -25,33 +27,19 @@ fun HomeRoute(
viewModel: HomeViewModel, viewModel: HomeViewModel,
) { ) {
HomeScreen( HomeScreen(
open = open, onStartSessionClick = { viewModel.onStartSessionClick(open) },
openAndPopUp = openAndPopUp, drawerActions = getDrawerActions(hiltViewModel(), open, openAndPopUp),
onStartSessionClick = { viewModel.onStartSessionClick(open) } navigationBarActions = getNavigationBarActions(hiltViewModel(), open),
) )
} }
@Composable @Composable
fun HomeScreen( fun HomeScreen(
open: (String) -> Unit,
openAndPopUp: (String, String) -> Unit,
onStartSessionClick: () -> Unit, onStartSessionClick: () -> Unit,
drawerActions: DrawerActions,
navigationBarActions: NavigationBarActions,
) { ) {
val drawerViewModel: DrawerViewModel = hiltViewModel()
val drawerActions = DrawerActions(
onHomeButtonClick = { drawerViewModel.onHomeButtonClick(open) },
onTimersClick = { drawerViewModel.onTimersClick(open) },
onSettingsClick = { drawerViewModel.onSettingsClick(open) },
onLogoutClick = { drawerViewModel.onLogoutClick(openAndPopUp) },
onAboutClick = { drawerViewModel.onAboutClick(open) },
)
val navigationBarViewModel: NavigationBarViewModel = hiltViewModel()
val navigationBarActions = NavigationBarActions(
onHomeClick = { navigationBarViewModel.onHomeClick(open) },
onTasksClick = { navigationBarViewModel.onTasksClick(open) },
onSessionsClick = { navigationBarViewModel.onSessionsClick(open) },
onProfileClick = { navigationBarViewModel.onProfileClick(open) },
)
PrimaryScreenTemplate( PrimaryScreenTemplate(
title = resources().getString(R.string.home), title = resources().getString(R.string.home),
drawerActions = drawerActions, drawerActions = drawerActions,
@ -77,5 +65,9 @@ fun FriendsAction() {
@Preview @Preview
@Composable @Composable
fun HomeScreenPreview() { fun HomeScreenPreview() {
HomeScreen(open = {}, openAndPopUp = { _, _ -> run {} }, onStartSessionClick = {}) HomeScreen(
onStartSessionClick = {},
drawerActions = DrawerActions({}, {}, {}, {}, {}),
navigationBarActions = NavigationBarActions({}, {}, {}, {})
)
} }

View file

@ -23,6 +23,18 @@ data class NavigationBarActions(
val onProfileClick: () -> Unit, val onProfileClick: () -> Unit,
) )
fun getNavigationBarActions(
navigationBarViewModel: NavigationBarViewModel,
open: (String) -> Unit,
): NavigationBarActions {
return NavigationBarActions(
onHomeClick = { navigationBarViewModel.onHomeClick(open) },
onTasksClick = { navigationBarViewModel.onTasksClick(open) },
onSessionsClick = { navigationBarViewModel.onSessionsClick(open) },
onProfileClick = { navigationBarViewModel.onProfileClick(open) },
)
}
@Composable @Composable
fun NavigationBar( fun NavigationBar(
navigationBarActions: NavigationBarActions, navigationBarActions: NavigationBarActions,