added appstate
This commit is contained in:
		
							parent
							
								
									11d3d5c5d2
								
							
						
					
					
						commit
						a9e35be714
					
				
					 1 changed files with 51 additions and 0 deletions
				
			
		
							
								
								
									
										51
									
								
								app/src/main/java/be/ugent/sel/studeez/StudeezAppstate.kt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								app/src/main/java/be/ugent/sel/studeez/StudeezAppstate.kt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | ||||||
|  | package be.ugent.sel.studeez | ||||||
|  | 
 | ||||||
|  | import android.content.res.Resources | ||||||
|  | import androidx.compose.material.ScaffoldState | ||||||
|  | import androidx.compose.runtime.Stable | ||||||
|  | import androidx.navigation.NavHostController | ||||||
|  | import be.ugent.sel.studeez.common.snackbar.SnackbarManager | ||||||
|  | import be.ugent.sel.studeez.common.snackbar.SnackbarMessage.Companion.toMessage | ||||||
|  | import kotlinx.coroutines.CoroutineScope | ||||||
|  | import kotlinx.coroutines.flow.filterNotNull | ||||||
|  | import kotlinx.coroutines.launch | ||||||
|  | 
 | ||||||
|  | @Stable | ||||||
|  | class StudeezAppstate( | ||||||
|  |     val scaffoldState: ScaffoldState, | ||||||
|  |     val navController: NavHostController, | ||||||
|  |     private val snackbarManager: SnackbarManager, | ||||||
|  |     private val resources: Resources, | ||||||
|  |     coroutineScope: CoroutineScope | ||||||
|  | ) { | ||||||
|  |     init { | ||||||
|  |         coroutineScope.launch { | ||||||
|  |             snackbarManager.snackbarMessages.filterNotNull().collect { snackbarMessage -> | ||||||
|  |                 val text = snackbarMessage.toMessage(resources) | ||||||
|  |                 scaffoldState.snackbarHostState.showSnackbar(text) | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fun popUp() { | ||||||
|  |         navController.popBackStack() | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fun navigate(route: String) { | ||||||
|  |         navController.navigate(route) { launchSingleTop = true } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fun navigateAndPopUp(route: String, popUp: String) { | ||||||
|  |         navController.navigate(route) { | ||||||
|  |             launchSingleTop = true | ||||||
|  |             popUpTo(popUp) { inclusive = true } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fun clearAndNavigate(route: String) { | ||||||
|  |         navController.navigate(route) { | ||||||
|  |             launchSingleTop = true | ||||||
|  |             popUpTo(0) { inclusive = true } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in a new issue
	
	 lbarraga
						lbarraga