#52 fix dankzij Lukas tysm
This commit is contained in:
		
							parent
							
								
									12fe0c852e
								
							
						
					
					
						commit
						0d65637d91
					
				
					 5 changed files with 14 additions and 68 deletions
				
			
		| 
						 | 
				
			
			@ -1,10 +1,8 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.home
 | 
			
		||||
 | 
			
		||||
import androidx.compose.material.rememberScaffoldState
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.hilt.navigation.compose.hiltViewModel
 | 
			
		||||
import androidx.lifecycle.viewModelScope
 | 
			
		||||
import be.ugent.sel.studeez.R
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.BasicButton
 | 
			
		||||
import be.ugent.sel.studeez.common.ext.basicButton
 | 
			
		||||
| 
						 | 
				
			
			@ -16,12 +14,9 @@ fun HomeScreen(
 | 
			
		|||
    openAndPopUp: (String, String) -> Unit,
 | 
			
		||||
    viewModel: HomeViewModel = hiltViewModel()
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    PrimaryScreen(
 | 
			
		||||
        title = resources().getString(R.string.home),
 | 
			
		||||
        openDrawer = { viewModel.openDrawer() },
 | 
			
		||||
        onLogoutClick = { viewModel.onLogoutClick(openAndPopUp) },
 | 
			
		||||
        viewModel.scaffoldState
 | 
			
		||||
        onLogoutClick = { viewModel.onLogoutClick(openAndPopUp) }
 | 
			
		||||
    ) {
 | 
			
		||||
        BasicButton(R.string.start_session, Modifier.basicButton()) {
 | 
			
		||||
            viewModel.onStartSessionClick(openAndPopUp)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,12 +2,14 @@ package be.ugent.sel.studeez.screens.home
 | 
			
		|||
 | 
			
		||||
import androidx.compose.material.ScaffoldState
 | 
			
		||||
import androidx.compose.material.rememberScaffoldState
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.User
 | 
			
		||||
import be.ugent.sel.studeez.domain.AccountDAO
 | 
			
		||||
import be.ugent.sel.studeez.domain.LogService
 | 
			
		||||
import be.ugent.sel.studeez.navigation.StudeezDestinations.HOME_SCREEN
 | 
			
		||||
import be.ugent.sel.studeez.navigation.StudeezDestinations.LOGIN_SCREEN
 | 
			
		||||
import be.ugent.sel.studeez.screens.StudeezViewModel
 | 
			
		||||
import dagger.hilt.android.lifecycle.HiltViewModel
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import javax.inject.Inject
 | 
			
		||||
 | 
			
		||||
@HiltViewModel
 | 
			
		||||
| 
						 | 
				
			
			@ -15,7 +17,6 @@ class HomeViewModel @Inject constructor(
 | 
			
		|||
    private val accountDAO: AccountDAO,
 | 
			
		||||
    logService: LogService
 | 
			
		||||
) : StudeezViewModel(logService) {
 | 
			
		||||
    val scaffoldState: ScaffoldState = rememberScaffoldState()
 | 
			
		||||
 | 
			
		||||
    fun onStartSessionClick(openAndPopUp: (String, String) -> Unit) {
 | 
			
		||||
        // TODO openAndPopUp(StudeezDestinations.xxx, StudeezDestinations.HOME_SCREEN)
 | 
			
		||||
| 
						 | 
				
			
			@ -27,10 +28,4 @@ class HomeViewModel @Inject constructor(
 | 
			
		|||
            openAndPopup(LOGIN_SCREEN, HOME_SCREEN)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun openDrawer() {
 | 
			
		||||
        launchCatching {
 | 
			
		||||
            scaffoldState.drawerState.open()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -5,22 +5,26 @@ import androidx.compose.material.*
 | 
			
		|||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.filled.Menu
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.rememberCoroutineScope
 | 
			
		||||
import androidx.compose.ui.tooling.preview.Preview
 | 
			
		||||
import be.ugent.sel.studeez.R
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.CollapsedAddButton
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.Drawer
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.NavigationBar
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.User
 | 
			
		||||
import be.ugent.sel.studeez.resources
 | 
			
		||||
import be.ugent.sel.studeez.ui.theme.StudeezTheme
 | 
			
		||||
import kotlinx.coroutines.CoroutineScope
 | 
			
		||||
import kotlinx.coroutines.launch
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun PrimaryScreen(
 | 
			
		||||
    title: String,
 | 
			
		||||
    openDrawer: () -> Unit,
 | 
			
		||||
    onLogoutClick: () -> Unit,
 | 
			
		||||
    scaffoldState: ScaffoldState,
 | 
			
		||||
    content: @Composable (PaddingValues) -> Unit
 | 
			
		||||
) {
 | 
			
		||||
    val scaffoldState: ScaffoldState = rememberScaffoldState()
 | 
			
		||||
    val coroutineScope: CoroutineScope = rememberCoroutineScope()
 | 
			
		||||
 | 
			
		||||
    Scaffold(
 | 
			
		||||
        scaffoldState = scaffoldState,
 | 
			
		||||
| 
						 | 
				
			
			@ -28,7 +32,9 @@ fun PrimaryScreen(
 | 
			
		|||
        topBar = { TopAppBar(
 | 
			
		||||
            title = { Text(text = title) },
 | 
			
		||||
            navigationIcon = {
 | 
			
		||||
                IconButton(onClick = { openDrawer() }) {
 | 
			
		||||
                IconButton(onClick = {
 | 
			
		||||
                    coroutineScope.launch { scaffoldState.drawerState.open() }
 | 
			
		||||
                }) {
 | 
			
		||||
                    Icon(
 | 
			
		||||
                        imageVector = Icons.Default.Menu,
 | 
			
		||||
                        contentDescription = resources().getString(R.string.menu)
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +45,6 @@ fun PrimaryScreen(
 | 
			
		|||
 | 
			
		||||
        drawerContent = {
 | 
			
		||||
            Drawer(
 | 
			
		||||
                currentUser = "TODO John Doe",
 | 
			
		||||
                onLogoutClick = { onLogoutClick() }
 | 
			
		||||
            )
 | 
			
		||||
        },
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +64,7 @@ fun PrimaryScreenPreview() {
 | 
			
		|||
    StudeezTheme {
 | 
			
		||||
        PrimaryScreen(
 | 
			
		||||
            "Preview screen",
 | 
			
		||||
            {}, {}, rememberScaffoldState()
 | 
			
		||||
            {}
 | 
			
		||||
        ) {}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,14 +0,0 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.templates.primary_screen
 | 
			
		||||
 | 
			
		||||
import androidx.compose.material.ScaffoldState
 | 
			
		||||
import androidx.compose.material.rememberScaffoldState
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.remember
 | 
			
		||||
import be.ugent.sel.studeez.StudeezAppstate
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun rememberPrimaryScreenState(
 | 
			
		||||
    scaffoldState: ScaffoldState = rememberScaffoldState()
 | 
			
		||||
) = remember(scaffoldState) {
 | 
			
		||||
    StudeezAppstate(scaffoldState)
 | 
			
		||||
}
 | 
			
		||||
		Reference in a new issue