#52 fix dankzij Lukas tysm
This commit is contained in:
		
							parent
							
								
									12fe0c852e
								
							
						
					
					
						commit
						0d65637d91
					
				
					 5 changed files with 14 additions and 68 deletions
				
			
		|  | @ -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") | ||||
|     } | ||||
| } | ||||
|  | @ -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