mirror of
https://github.com/fromchat-messenger/app.git
synced 2026-09-22 19:15:05 +03:00
@@ -1,8 +1,13 @@
|
|||||||
package ru.fromchat.ui
|
package ru.fromchat.ui
|
||||||
|
|
||||||
|
import androidx.compose.animation.AnimatedContentTransitionScope.SlideDirection.Companion.End
|
||||||
|
import androidx.compose.animation.AnimatedContentTransitionScope.SlideDirection.Companion.Start
|
||||||
|
import androidx.compose.animation.core.tween
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.ui.unit.IntOffset
|
||||||
import androidx.compose.runtime.remember
|
import androidx.navigation.compose.NavHost
|
||||||
|
import androidx.navigation.compose.composable
|
||||||
|
import androidx.navigation.compose.rememberNavController
|
||||||
import ru.fromchat.ui.auth.LoginScreen
|
import ru.fromchat.ui.auth.LoginScreen
|
||||||
import ru.fromchat.ui.auth.RegisterScreen
|
import ru.fromchat.ui.auth.RegisterScreen
|
||||||
import ru.fromchat.ui.chat.ChatScreen
|
import ru.fromchat.ui.chat.ChatScreen
|
||||||
@@ -10,14 +15,51 @@ import ru.fromchat.ui.chat.ChatScreen
|
|||||||
@Composable
|
@Composable
|
||||||
fun App() {
|
fun App() {
|
||||||
FromChatTheme {
|
FromChatTheme {
|
||||||
val (route, setRoute) = remember { mutableStateOf("login") }
|
val navController = rememberNavController()
|
||||||
when (route) {
|
val animationSpec = tween<IntOffset>(400)
|
||||||
"login" -> LoginScreen(
|
|
||||||
onLoginSuccess = { setRoute("chat") },
|
NavHost(
|
||||||
onNavigateToRegister = { setRoute("register") }
|
navController = navController,
|
||||||
|
startDestination = "login",
|
||||||
|
enterTransition = {
|
||||||
|
slideIntoContainer(
|
||||||
|
Start,
|
||||||
|
animationSpec = animationSpec
|
||||||
)
|
)
|
||||||
"register" -> RegisterScreen(onRegistered = { setRoute("login") })
|
},
|
||||||
"chat" -> ChatScreen()
|
exitTransition = {
|
||||||
|
slideOutOfContainer(
|
||||||
|
Start,
|
||||||
|
animationSpec = animationSpec
|
||||||
|
)
|
||||||
|
},
|
||||||
|
popEnterTransition = {
|
||||||
|
slideIntoContainer(
|
||||||
|
End,
|
||||||
|
animationSpec = animationSpec
|
||||||
|
)
|
||||||
|
},
|
||||||
|
popExitTransition = {
|
||||||
|
slideOutOfContainer(
|
||||||
|
End,
|
||||||
|
animationSpec = animationSpec
|
||||||
|
)
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
composable("login") {
|
||||||
|
LoginScreen(
|
||||||
|
onLoginSuccess = { navController.navigate("chat") },
|
||||||
|
onNavigateToRegister = { navController.navigate("register") }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
composable("register") {
|
||||||
|
RegisterScreen(
|
||||||
|
onRegistered = { navController.navigate("login") }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
composable("chat") { ChatScreen() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user