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