#14 Basic navigation around the app

This commit is contained in:
Tibo De Peuter 2023-04-15 10:00:21 +02:00
parent 13140d4e3c
commit e4066dedd7
6 changed files with 60 additions and 5 deletions

View file

@ -20,6 +20,7 @@ import be.ugent.sel.studeez.common.snackbar.SnackbarManager
import be.ugent.sel.studeez.navigation.StudeezDestinations
import be.ugent.sel.studeez.screens.home.HomeScreen
import be.ugent.sel.studeez.screens.log_in.LoginScreen
import be.ugent.sel.studeez.screens.profile.ProfileScreen
import be.ugent.sel.studeez.screens.sign_up.SignUpScreen
import be.ugent.sel.studeez.screens.splash.SplashScreen
import be.ugent.sel.studeez.ui.theme.StudeezTheme
@ -99,4 +100,14 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) {
composable(StudeezDestinations.HOME_SCREEN) {
HomeScreen(open, openAndPopUp)
}
// TODO Tasks screen
// TODO Sessions screen
composable(StudeezDestinations.PROFILE_SCREEN) {
ProfileScreen(open, openAndPopUp)
}
// TODO Timers screen
// TODO Settings screen
}

View file

@ -4,6 +4,12 @@ object StudeezDestinations {
const val SPLASH_SCREEN = "splash"
const val SIGN_UP_SCREEN = "signup"
const val LOGIN_SCREEN = "login"
const val HOME_SCREEN = "home"
const val HOME_SCREEN = "home"
// const val TASKS_SCREEN = "tasks"
// const val SESSIONS_SCREEN = "sessions"
const val PROFILE_SCREEN = "profile"
// const val TIMERS_SCREEN = "timers"
// const val SETTINGS_SCREEN = "settings"
}

View file

@ -3,6 +3,7 @@ package be.ugent.sel.studeez.screens.drawer
import be.ugent.sel.studeez.domain.AccountDAO
import be.ugent.sel.studeez.domain.LogService
import be.ugent.sel.studeez.navigation.StudeezDestinations
import be.ugent.sel.studeez.navigation.StudeezDestinations.HOME_SCREEN
import be.ugent.sel.studeez.screens.StudeezViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@ -14,7 +15,7 @@ class DrawerViewModel @Inject constructor(
) : StudeezViewModel(logService) {
fun onHomeButtonClick(open: (String) -> Unit) {
// TODO
open(HOME_SCREEN)
}
fun onTimersClick(open: (String) -> Unit) {
@ -25,10 +26,10 @@ class DrawerViewModel @Inject constructor(
// TODO
}
fun onLogoutClick(openAndPopup: (String, String) -> Unit) {
fun onLogoutClick(openAndPopUp: (String, String) -> Unit) {
launchCatching {
accountDAO.signOut()
openAndPopup(StudeezDestinations.LOGIN_SCREEN, StudeezDestinations.HOME_SCREEN)
openAndPopUp(StudeezDestinations.LOGIN_SCREEN, StudeezDestinations.HOME_SCREEN)
}
}

View file

@ -3,6 +3,7 @@ package be.ugent.sel.studeez.screens.navbar
import be.ugent.sel.studeez.domain.AccountDAO
import be.ugent.sel.studeez.domain.LogService
import be.ugent.sel.studeez.navigation.StudeezDestinations
import be.ugent.sel.studeez.navigation.StudeezDestinations.HOME_SCREEN
import be.ugent.sel.studeez.navigation.StudeezDestinations.PROFILE_SCREEN
import be.ugent.sel.studeez.screens.StudeezViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
@ -15,7 +16,7 @@ class NavigationBarViewModel @Inject constructor(
) : StudeezViewModel(logService) {
fun onHomeClick(open: (String) -> Unit) {
// TODO
open(HOME_SCREEN)
}
fun onTasksClick(open: (String) -> Unit) {

View file

@ -0,0 +1,23 @@
package be.ugent.sel.studeez.screens.profile
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.hilt.navigation.compose.hiltViewModel
import be.ugent.sel.studeez.common.composable.PrimaryScreenTemplate
import be.ugent.sel.studeez.resources
import be.ugent.sel.studeez.R.string as AppText
@Composable
fun ProfileScreen(
open: (String) -> Unit,
openAndPopUp: (String, String) -> Unit,
viewModel: ProfileViewModel = hiltViewModel()
) {
PrimaryScreenTemplate(
title = resources().getString(AppText.profile),
open = open,
openAndPopUp = openAndPopUp
) {
Text(text = "This is your profile!") // TODO
}
}

View file

@ -0,0 +1,13 @@
package be.ugent.sel.studeez.screens.profile
import be.ugent.sel.studeez.domain.LogService
import be.ugent.sel.studeez.screens.StudeezViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class ProfileViewModel @Inject constructor(
logService: LogService
) : StudeezViewModel(logService) {
}