#52 fix dankzij Lukas tysm

This commit is contained in:
Tibo De Peuter 2023-04-13 13:06:13 +02:00
parent 12fe0c852e
commit 0d65637d91
5 changed files with 14 additions and 68 deletions

View file

@ -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)

View file

@ -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()
}
}
}

View file

@ -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()
{}
) {}
}
}

View file

@ -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)
}