mirror of
https://github.com/smyalygames/checklist-tester.git
synced 2025-05-18 06:24:12 +02:00
fix(connector): made navigation between screens much better when creating new project
This commit is contained in:
parent
4e040516db
commit
8739343969
@ -1,7 +1,8 @@
|
||||
package tab.project
|
||||
|
||||
import androidx.compose.runtime.*
|
||||
import cafe.adriel.voyager.koin.getScreenModel
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import cafe.adriel.voyager.navigator.CurrentScreen
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import cafe.adriel.voyager.navigator.tab.Tab
|
||||
import cafe.adriel.voyager.navigator.tab.TabOptions
|
||||
@ -9,7 +10,6 @@ import connector.composeapp.generated.resources.Res
|
||||
import connector.composeapp.generated.resources.folder_24px
|
||||
import org.jetbrains.compose.resources.ExperimentalResourceApi
|
||||
import org.jetbrains.compose.resources.painterResource
|
||||
import tab.LoadingScreen
|
||||
|
||||
class Projects : Tab {
|
||||
@OptIn(ExperimentalResourceApi::class)
|
||||
@ -30,17 +30,8 @@ class Projects : Tab {
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val screenModel = getScreenModel<ProjectsScreenModel>()
|
||||
val state by screenModel.state.collectAsState()
|
||||
|
||||
when (val s = state) {
|
||||
is ProjectState.Init -> Navigator(NoProjects())
|
||||
is ProjectState.Loading -> Navigator(LoadingScreen("Projects"))
|
||||
is ProjectState.Result -> Navigator(ListProjects(s.projects))
|
||||
}
|
||||
|
||||
LaunchedEffect(currentCompositeKeyHash) {
|
||||
screenModel.projectExists()
|
||||
Navigator(ProjectsContent()) {
|
||||
CurrentScreen()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,26 @@
|
||||
package tab.project
|
||||
|
||||
import androidx.compose.runtime.*
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.koin.getScreenModel
|
||||
import tab.LoadingScreen
|
||||
|
||||
class ProjectsContent : Screen {
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val screenModel = getScreenModel<ProjectsScreenModel>()
|
||||
val state by screenModel.state.collectAsState()
|
||||
|
||||
when (val s = state) {
|
||||
is ProjectState.Init -> NoProjects().Content()
|
||||
is ProjectState.Loading -> LoadingScreen("Projects").Content()
|
||||
is ProjectState.Result -> ListProjects(s.projects).Content()
|
||||
}
|
||||
|
||||
|
||||
LaunchedEffect(currentCompositeKeyHash) {
|
||||
screenModel.projectExists()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user