fix(connector): made navigation between screens much better when creating new project

This commit is contained in:
Anthony 2024-04-04 19:30:38 +02:00
parent 4e040516db
commit 8739343969
2 changed files with 31 additions and 14 deletions

View File

@ -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()
}
}
}

View File

@ -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()
}
}
}