diff --git a/connector/composeApp/src/desktopMain/kotlin/tab/project/NoProjects.kt b/connector/composeApp/src/desktopMain/kotlin/tab/project/NoProjects.kt index 6973ab5..93868a2 100644 --- a/connector/composeApp/src/desktopMain/kotlin/tab/project/NoProjects.kt +++ b/connector/composeApp/src/desktopMain/kotlin/tab/project/NoProjects.kt @@ -12,7 +12,7 @@ import cafe.adriel.voyager.core.screen.Screen import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow -object NoProjects : Screen { +class NoProjects : Screen { @Composable override fun Content() { val navigator = LocalNavigator.currentOrThrow diff --git a/connector/composeApp/src/desktopMain/kotlin/tab/project/Projects.kt b/connector/composeApp/src/desktopMain/kotlin/tab/project/Projects.kt index 75d0fe9..3befa6a 100644 --- a/connector/composeApp/src/desktopMain/kotlin/tab/project/Projects.kt +++ b/connector/composeApp/src/desktopMain/kotlin/tab/project/Projects.kt @@ -1,8 +1,10 @@ package tab.project import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue import androidx.compose.runtime.remember -import cafe.adriel.voyager.navigator.CurrentScreen +import cafe.adriel.voyager.koin.getScreenModel import cafe.adriel.voyager.navigator.Navigator import cafe.adriel.voyager.navigator.tab.Tab import cafe.adriel.voyager.navigator.tab.TabOptions @@ -10,8 +12,9 @@ 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 -object Projects : Tab { +class Projects : Tab { @OptIn(ExperimentalResourceApi::class) override val options: TabOptions @Composable @@ -30,8 +33,14 @@ object Projects : Tab { @Composable override fun Content() { - Navigator(ListProjects()) { - CurrentScreen() + val screenModel = getScreenModel() + val state by screenModel.state.collectAsState() + + when (state) { + is ProjectsScreenModel.State.UnInit -> screenModel.projectExists() + is ProjectsScreenModel.State.Init -> Navigator(NoProjects()) + is ProjectsScreenModel.State.Loading -> Navigator(LoadingScreen("Projects")) + is ProjectsScreenModel.State.Result -> Navigator(ListProjects()) } } }