#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 | package be.ugent.sel.studeez.common.composable | ||||||
| 
 | 
 | ||||||
| import androidx.compose.foundation.Image |  | ||||||
| import androidx.compose.foundation.clickable | import androidx.compose.foundation.clickable | ||||||
| import androidx.compose.foundation.layout.* | import androidx.compose.foundation.layout.* | ||||||
| import androidx.compose.material.Divider |  | ||||||
| import androidx.compose.material.Icon | import androidx.compose.material.Icon | ||||||
| import androidx.compose.material.Text | import androidx.compose.material.Text | ||||||
| import androidx.compose.material.icons.Icons | 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.runtime.Composable | ||||||
| import androidx.compose.ui.Modifier | import androidx.compose.ui.Modifier | ||||||
| import androidx.compose.ui.graphics.vector.ImageVector | 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.res.vectorResource | ||||||
| import androidx.compose.ui.tooling.preview.Preview | import androidx.compose.ui.tooling.preview.Preview | ||||||
| import be.ugent.sel.studeez.R | 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.resources | ||||||
| import be.ugent.sel.studeez.ui.theme.StudeezTheme | import be.ugent.sel.studeez.ui.theme.StudeezTheme | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @Composable | @Composable | ||||||
| fun Drawer( | fun Drawer( | ||||||
|     currentUser: String, |  | ||||||
|     onLogoutClick: () -> Unit |     onLogoutClick: () -> Unit | ||||||
| ) { | ) { | ||||||
|     Column(modifier = Modifier.fillMaxSize()) { |     Column(modifier = Modifier.fillMaxSize()) { | ||||||
|         LoggedInUserCard(currentUser) |  | ||||||
| 
 |  | ||||||
|         Divider() |  | ||||||
| 
 |  | ||||||
|         DrawerEntry( |         DrawerEntry( | ||||||
|             icon = Icons.Default.Home, |             icon = Icons.Default.Home, | ||||||
|             text = resources().getString(R.string.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 | @Preview | ||||||
| @Composable | @Composable | ||||||
| fun DrawerPreview() { | fun DrawerPreview() { | ||||||
|     StudeezTheme { |     StudeezTheme { | ||||||
|         Drawer( |         Drawer( | ||||||
|             "John Doe", |  | ||||||
|             {} |             {} | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 |  | ||||||
| @Preview |  | ||||||
| @Composable |  | ||||||
| fun LoggedInUserCardPreview() { |  | ||||||
|     StudeezTheme { |  | ||||||
|         LoggedInUserCard("John Doe") |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | @ -1,10 +1,8 @@ | ||||||
| package be.ugent.sel.studeez.screens.home | package be.ugent.sel.studeez.screens.home | ||||||
| 
 | 
 | ||||||
| import androidx.compose.material.rememberScaffoldState |  | ||||||
| import androidx.compose.runtime.Composable | import androidx.compose.runtime.Composable | ||||||
| import androidx.compose.ui.Modifier | import androidx.compose.ui.Modifier | ||||||
| import androidx.hilt.navigation.compose.hiltViewModel | import androidx.hilt.navigation.compose.hiltViewModel | ||||||
| import androidx.lifecycle.viewModelScope |  | ||||||
| import be.ugent.sel.studeez.R | import be.ugent.sel.studeez.R | ||||||
| import be.ugent.sel.studeez.common.composable.BasicButton | import be.ugent.sel.studeez.common.composable.BasicButton | ||||||
| import be.ugent.sel.studeez.common.ext.basicButton | import be.ugent.sel.studeez.common.ext.basicButton | ||||||
|  | @ -16,12 +14,9 @@ fun HomeScreen( | ||||||
|     openAndPopUp: (String, String) -> Unit, |     openAndPopUp: (String, String) -> Unit, | ||||||
|     viewModel: HomeViewModel = hiltViewModel() |     viewModel: HomeViewModel = hiltViewModel() | ||||||
| ) { | ) { | ||||||
| 
 |  | ||||||
|     PrimaryScreen( |     PrimaryScreen( | ||||||
|         title = resources().getString(R.string.home), |         title = resources().getString(R.string.home), | ||||||
|         openDrawer = { viewModel.openDrawer() }, |         onLogoutClick = { viewModel.onLogoutClick(openAndPopUp) } | ||||||
|         onLogoutClick = { viewModel.onLogoutClick(openAndPopUp) }, |  | ||||||
|         viewModel.scaffoldState |  | ||||||
|     ) { |     ) { | ||||||
|         BasicButton(R.string.start_session, Modifier.basicButton()) { |         BasicButton(R.string.start_session, Modifier.basicButton()) { | ||||||
|             viewModel.onStartSessionClick(openAndPopUp) |             viewModel.onStartSessionClick(openAndPopUp) | ||||||
|  |  | ||||||
|  | @ -2,12 +2,14 @@ package be.ugent.sel.studeez.screens.home | ||||||
| 
 | 
 | ||||||
| import androidx.compose.material.ScaffoldState | import androidx.compose.material.ScaffoldState | ||||||
| import androidx.compose.material.rememberScaffoldState | 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.AccountDAO | ||||||
| import be.ugent.sel.studeez.domain.LogService | import be.ugent.sel.studeez.domain.LogService | ||||||
| import be.ugent.sel.studeez.navigation.StudeezDestinations.HOME_SCREEN | import be.ugent.sel.studeez.navigation.StudeezDestinations.HOME_SCREEN | ||||||
| import be.ugent.sel.studeez.navigation.StudeezDestinations.LOGIN_SCREEN | import be.ugent.sel.studeez.navigation.StudeezDestinations.LOGIN_SCREEN | ||||||
| import be.ugent.sel.studeez.screens.StudeezViewModel | import be.ugent.sel.studeez.screens.StudeezViewModel | ||||||
| import dagger.hilt.android.lifecycle.HiltViewModel | import dagger.hilt.android.lifecycle.HiltViewModel | ||||||
|  | import kotlinx.coroutines.flow.Flow | ||||||
| import javax.inject.Inject | import javax.inject.Inject | ||||||
| 
 | 
 | ||||||
| @HiltViewModel | @HiltViewModel | ||||||
|  | @ -15,7 +17,6 @@ class HomeViewModel @Inject constructor( | ||||||
|     private val accountDAO: AccountDAO, |     private val accountDAO: AccountDAO, | ||||||
|     logService: LogService |     logService: LogService | ||||||
| ) : StudeezViewModel(logService) { | ) : StudeezViewModel(logService) { | ||||||
|     val scaffoldState: ScaffoldState = rememberScaffoldState() |  | ||||||
| 
 | 
 | ||||||
|     fun onStartSessionClick(openAndPopUp: (String, String) -> Unit) { |     fun onStartSessionClick(openAndPopUp: (String, String) -> Unit) { | ||||||
|         // TODO openAndPopUp(StudeezDestinations.xxx, StudeezDestinations.HOME_SCREEN) |         // TODO openAndPopUp(StudeezDestinations.xxx, StudeezDestinations.HOME_SCREEN) | ||||||
|  | @ -27,10 +28,4 @@ class HomeViewModel @Inject constructor( | ||||||
|             openAndPopup(LOGIN_SCREEN, HOME_SCREEN) |             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.Icons | ||||||
| import androidx.compose.material.icons.filled.Menu | import androidx.compose.material.icons.filled.Menu | ||||||
| import androidx.compose.runtime.Composable | import androidx.compose.runtime.Composable | ||||||
|  | import androidx.compose.runtime.rememberCoroutineScope | ||||||
| import androidx.compose.ui.tooling.preview.Preview | import androidx.compose.ui.tooling.preview.Preview | ||||||
| import be.ugent.sel.studeez.R | import be.ugent.sel.studeez.R | ||||||
| import be.ugent.sel.studeez.common.composable.CollapsedAddButton | import be.ugent.sel.studeez.common.composable.CollapsedAddButton | ||||||
| import be.ugent.sel.studeez.common.composable.Drawer | import be.ugent.sel.studeez.common.composable.Drawer | ||||||
| import be.ugent.sel.studeez.common.composable.NavigationBar | 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.resources | ||||||
| import be.ugent.sel.studeez.ui.theme.StudeezTheme | import be.ugent.sel.studeez.ui.theme.StudeezTheme | ||||||
|  | import kotlinx.coroutines.CoroutineScope | ||||||
|  | import kotlinx.coroutines.launch | ||||||
| 
 | 
 | ||||||
| @Composable | @Composable | ||||||
| fun PrimaryScreen( | fun PrimaryScreen( | ||||||
|     title: String, |     title: String, | ||||||
|     openDrawer: () -> Unit, |  | ||||||
|     onLogoutClick: () -> Unit, |     onLogoutClick: () -> Unit, | ||||||
|     scaffoldState: ScaffoldState, |  | ||||||
|     content: @Composable (PaddingValues) -> Unit |     content: @Composable (PaddingValues) -> Unit | ||||||
| ) { | ) { | ||||||
|  |     val scaffoldState: ScaffoldState = rememberScaffoldState() | ||||||
|  |     val coroutineScope: CoroutineScope = rememberCoroutineScope() | ||||||
| 
 | 
 | ||||||
|     Scaffold( |     Scaffold( | ||||||
|         scaffoldState = scaffoldState, |         scaffoldState = scaffoldState, | ||||||
|  | @ -28,7 +32,9 @@ fun PrimaryScreen( | ||||||
|         topBar = { TopAppBar( |         topBar = { TopAppBar( | ||||||
|             title = { Text(text = title) }, |             title = { Text(text = title) }, | ||||||
|             navigationIcon = { |             navigationIcon = { | ||||||
|                 IconButton(onClick = { openDrawer() }) { |                 IconButton(onClick = { | ||||||
|  |                     coroutineScope.launch { scaffoldState.drawerState.open() } | ||||||
|  |                 }) { | ||||||
|                     Icon( |                     Icon( | ||||||
|                         imageVector = Icons.Default.Menu, |                         imageVector = Icons.Default.Menu, | ||||||
|                         contentDescription = resources().getString(R.string.menu) |                         contentDescription = resources().getString(R.string.menu) | ||||||
|  | @ -39,7 +45,6 @@ fun PrimaryScreen( | ||||||
| 
 | 
 | ||||||
|         drawerContent = { |         drawerContent = { | ||||||
|             Drawer( |             Drawer( | ||||||
|                 currentUser = "TODO John Doe", |  | ||||||
|                 onLogoutClick = { onLogoutClick() } |                 onLogoutClick = { onLogoutClick() } | ||||||
|             ) |             ) | ||||||
|         }, |         }, | ||||||
|  | @ -59,7 +64,7 @@ fun PrimaryScreenPreview() { | ||||||
|     StudeezTheme { |     StudeezTheme { | ||||||
|         PrimaryScreen( |         PrimaryScreen( | ||||||
|             "Preview screen", |             "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