mirror of
https://github.com/smyalygames/checklist-tester.git
synced 2025-09-13 12:22:19 +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
|
package tab.project
|
||||||
|
|
||||||
import androidx.compose.runtime.*
|
import androidx.compose.runtime.Composable
|
||||||
import cafe.adriel.voyager.koin.getScreenModel
|
import androidx.compose.runtime.remember
|
||||||
|
import cafe.adriel.voyager.navigator.CurrentScreen
|
||||||
import cafe.adriel.voyager.navigator.Navigator
|
import cafe.adriel.voyager.navigator.Navigator
|
||||||
import cafe.adriel.voyager.navigator.tab.Tab
|
import cafe.adriel.voyager.navigator.tab.Tab
|
||||||
import cafe.adriel.voyager.navigator.tab.TabOptions
|
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 connector.composeapp.generated.resources.folder_24px
|
||||||
import org.jetbrains.compose.resources.ExperimentalResourceApi
|
import org.jetbrains.compose.resources.ExperimentalResourceApi
|
||||||
import org.jetbrains.compose.resources.painterResource
|
import org.jetbrains.compose.resources.painterResource
|
||||||
import tab.LoadingScreen
|
|
||||||
|
|
||||||
class Projects : Tab {
|
class Projects : Tab {
|
||||||
@OptIn(ExperimentalResourceApi::class)
|
@OptIn(ExperimentalResourceApi::class)
|
||||||
@ -30,17 +30,8 @@ class Projects : Tab {
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun Content() {
|
override fun Content() {
|
||||||
val screenModel = getScreenModel<ProjectsScreenModel>()
|
Navigator(ProjectsContent()) {
|
||||||
val state by screenModel.state.collectAsState()
|
CurrentScreen()
|
||||||
|
|
||||||
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()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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