#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,9 +1,7 @@
package be.ugent.sel.studeez.common.composable
import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material.Divider
import androidx.compose.material.Icon
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
@ -13,25 +11,19 @@ import androidx.compose.material.icons.outlined.Info
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import be.ugent.sel.studeez.R
import be.ugent.sel.studeez.data.local.models.User
import be.ugent.sel.studeez.resources
import be.ugent.sel.studeez.ui.theme.StudeezTheme
@Composable
fun Drawer(
currentUser: String,
onLogoutClick: () -> Unit
) {
Column(modifier = Modifier.fillMaxSize()) {
LoggedInUserCard(currentUser)
Divider()
DrawerEntry(
icon = Icons.Default.Home,
text = resources().getString(R.string.home)
@ -87,39 +79,12 @@ fun DrawerEntry(
}
}
@Composable
fun LoggedInUserCard(
username: String
) {
Column() {
// TODO Profile picture of current user
Image(
painter = painterResource(id = R.drawable.ic_launcher_background),
contentDescription = stringResource(R.string.profile_picture_description)
)
Text(text = username)
// TODO Description of user (normal user or something else?)
Text(text = stringResource(id = R.string.user_description))
}
}
@Preview
@Composable
fun DrawerPreview() {
StudeezTheme {
Drawer(
"John Doe",
{}
)
}
}
@Preview
@Composable
fun LoggedInUserCardPreview() {
StudeezTheme {
LoggedInUserCard("John Doe")
}
}

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