From 6cb8f4659471b6e5da91a1fd9267051720723874 Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 4 Apr 2024 10:15:32 +0200 Subject: [PATCH] feat(connector): add di for projects --- .../kotlin/tab/project/NoProjects.kt | 2 +- .../desktopMain/kotlin/tab/project/Projects.kt | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) 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()) } } }