~repos /only-bible-app
git clone
https://pyrossh.dev/repos/only-bible-app.git
The only bible app you will ever need. No ads. No in-app purchases. No distractions.
file:
composeApp/src/commonMain/kotlin/dev/pyrossh/onlyBible/AppHost.kt
package dev.pyrossh.onlyBible
import androidx.compose.animation.EnterTransitionimport androidx.compose.animation.ExitTransitionimport androidx.compose.animation.core.tweenimport androidx.compose.runtime.Composableimport androidx.compose.runtime.CompositionLocalProviderimport androidx.navigation.compose.NavHostimport androidx.navigation.compose.composableimport androidx.navigation.compose.rememberNavControllerimport androidx.navigation.toRouteimport dev.pyrossh.onlyBible.screens.ChapterScreenimport dev.pyrossh.onlyBible.screens.ChapterScreenPropsimport dev.pyrossh.onlyBible.screens.Dirimport utils.LocalNavController
@Composablefun AppHost( model: AppViewModel) { val navController = rememberNavController() if (!model.isLoading) { CompositionLocalProvider(LocalNavController provides navController) { NavHost( navController = navController, startDestination = ChapterScreenProps( model.bookIndex, model.chapterIndex, model.verseIndex ) ) { composable<ChapterScreenProps>( enterTransition = { val props = this.targetState.toRoute<ChapterScreenProps>() slideIntoContainer( Dir.valueOf(props.dir).slideDirection(), tween(400), ) }, exitTransition = { ExitTransition.None }, popEnterTransition = { EnterTransition.None }, popExitTransition = { val props = this.targetState.toRoute<ChapterScreenProps>() slideOutOfContainer( Dir.valueOf(props.dir).reverse().slideDirection(), tween(400), ) } ) { val props = it.toRoute<ChapterScreenProps>() ChapterScreen( model = model, bookIndex = props.bookIndex, chapterIndex = props.chapterIndex, verseIndex = props.verseIndex, ) } } } }}