#14 Basic navigation around the app
This commit is contained in:
		
							parent
							
								
									13140d4e3c
								
							
						
					
					
						commit
						e4066dedd7
					
				
					 6 changed files with 60 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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"
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in a new issue