Loading core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavigationExtensions.kt 0 → 100644 +30 −0 Original line number Diff line number Diff line package app.k9mail.core.ui.compose.common.navigation import android.net.Uri import androidx.compose.animation.AnimatedContentScope import androidx.compose.runtime.Composable import androidx.core.net.toUri import androidx.navigation.NamedNavArgument import androidx.navigation.NavBackStackEntry import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable import androidx.navigation.navDeepLink fun NavGraphBuilder.deepLinkComposable( route: String, arguments: List<NamedNavArgument> = emptyList(), content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit, ) { composable( route = route, arguments = arguments, deepLinks = listOf( navDeepLink { uriPattern = route.toDeepLink() }, ), content = content, ) } fun String.toDeepLink(): String = "app://$this" fun String.toDeepLinkUri(): Uri = toDeepLink().toUri() feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavigation.kt +2 −2 Original line number Diff line number Diff line Loading @@ -3,7 +3,7 @@ package app.k9mail.feature.account.setup.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable import app.k9mail.core.ui.compose.common.navigation.deepLinkComposable import app.k9mail.feature.account.setup.ui.AccountSetupScreen const val NAVIGATION_ROUTE_ACCOUNT_SETUP = "/account/setup" Loading @@ -16,7 +16,7 @@ fun NavGraphBuilder.accountSetupRoute( onBack: () -> Unit, onFinish: (String) -> Unit, ) { composable(route = NAVIGATION_ROUTE_ACCOUNT_SETUP) { deepLinkComposable(route = NAVIGATION_ROUTE_ACCOUNT_SETUP) { AccountSetupScreen( onBack = onBack, onFinish = onFinish, Loading feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt +4 −9 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.core.view.WindowCompat import app.k9mail.core.ui.compose.common.activity.setActivityContent import app.k9mail.core.ui.compose.common.navigation.toDeepLinkUri import app.k9mail.feature.account.setup.navigation.NAVIGATION_ROUTE_ACCOUNT_SETUP import app.k9mail.feature.launcher.ui.FeatureLauncherApp import app.k9mail.feature.onboarding.navigation.NAVIGATION_ROUTE_ONBOARDING Loading @@ -17,22 +18,16 @@ class FeatureLauncherActivity : ComponentActivity() { WindowCompat.setDecorFitsSystemWindows(window, false) val destination = intent.getStringExtra(EXTRA_DESTINATION) setActivityContent { FeatureLauncherApp(startDestination = destination) FeatureLauncherApp() } } companion object { private const val EXTRA_DESTINATION = "destination" private const val DESTINATION_ONBOARDING = NAVIGATION_ROUTE_ONBOARDING private const val DESTINATION_SETUP_ACCOUNT = NAVIGATION_ROUTE_ACCOUNT_SETUP @JvmStatic fun launchOnboarding(context: Activity) { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { putExtra(EXTRA_DESTINATION, DESTINATION_ONBOARDING) data = NAVIGATION_ROUTE_ONBOARDING.toDeepLinkUri() flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK } context.startActivity(intent) Loading @@ -41,7 +36,7 @@ class FeatureLauncherActivity : ComponentActivity() { @JvmStatic fun launchSetupAccount(context: Activity) { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { putExtra(EXTRA_DESTINATION, DESTINATION_SETUP_ACCOUNT) data = NAVIGATION_ROUTE_ACCOUNT_SETUP.toDeepLinkUri() } context.startActivity(intent) } Loading feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt +1 −2 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ import org.koin.compose.koinInject @Composable fun FeatureLauncherNavHost( navController: NavHostController, startDestination: String?, onBack: () -> Unit, modifier: Modifier = Modifier, importSettingsLauncher: ImportSettingsLauncher = koinInject(), Loading @@ -23,7 +22,7 @@ fun FeatureLauncherNavHost( ) { NavHost( navController = navController, startDestination = startDestination ?: NAVIGATION_ROUTE_ONBOARDING, startDestination = NAVIGATION_ROUTE_ONBOARDING, modifier = modifier, ) { onboardingRoute( Loading feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt +0 −2 Original line number Diff line number Diff line Loading @@ -12,7 +12,6 @@ import app.k9mail.feature.launcher.navigation.FeatureLauncherNavHost @Composable fun FeatureLauncherApp( startDestination: String?, modifier: Modifier = Modifier, ) { val navController = rememberNavController() Loading @@ -28,7 +27,6 @@ fun FeatureLauncherApp( FeatureLauncherNavHost( navController = navController, startDestination = startDestination, onBack = { activity.finish() }, ) } Loading Loading
core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavigationExtensions.kt 0 → 100644 +30 −0 Original line number Diff line number Diff line package app.k9mail.core.ui.compose.common.navigation import android.net.Uri import androidx.compose.animation.AnimatedContentScope import androidx.compose.runtime.Composable import androidx.core.net.toUri import androidx.navigation.NamedNavArgument import androidx.navigation.NavBackStackEntry import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable import androidx.navigation.navDeepLink fun NavGraphBuilder.deepLinkComposable( route: String, arguments: List<NamedNavArgument> = emptyList(), content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit, ) { composable( route = route, arguments = arguments, deepLinks = listOf( navDeepLink { uriPattern = route.toDeepLink() }, ), content = content, ) } fun String.toDeepLink(): String = "app://$this" fun String.toDeepLinkUri(): Uri = toDeepLink().toUri()
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavigation.kt +2 −2 Original line number Diff line number Diff line Loading @@ -3,7 +3,7 @@ package app.k9mail.feature.account.setup.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable import app.k9mail.core.ui.compose.common.navigation.deepLinkComposable import app.k9mail.feature.account.setup.ui.AccountSetupScreen const val NAVIGATION_ROUTE_ACCOUNT_SETUP = "/account/setup" Loading @@ -16,7 +16,7 @@ fun NavGraphBuilder.accountSetupRoute( onBack: () -> Unit, onFinish: (String) -> Unit, ) { composable(route = NAVIGATION_ROUTE_ACCOUNT_SETUP) { deepLinkComposable(route = NAVIGATION_ROUTE_ACCOUNT_SETUP) { AccountSetupScreen( onBack = onBack, onFinish = onFinish, Loading
feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt +4 −9 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.core.view.WindowCompat import app.k9mail.core.ui.compose.common.activity.setActivityContent import app.k9mail.core.ui.compose.common.navigation.toDeepLinkUri import app.k9mail.feature.account.setup.navigation.NAVIGATION_ROUTE_ACCOUNT_SETUP import app.k9mail.feature.launcher.ui.FeatureLauncherApp import app.k9mail.feature.onboarding.navigation.NAVIGATION_ROUTE_ONBOARDING Loading @@ -17,22 +18,16 @@ class FeatureLauncherActivity : ComponentActivity() { WindowCompat.setDecorFitsSystemWindows(window, false) val destination = intent.getStringExtra(EXTRA_DESTINATION) setActivityContent { FeatureLauncherApp(startDestination = destination) FeatureLauncherApp() } } companion object { private const val EXTRA_DESTINATION = "destination" private const val DESTINATION_ONBOARDING = NAVIGATION_ROUTE_ONBOARDING private const val DESTINATION_SETUP_ACCOUNT = NAVIGATION_ROUTE_ACCOUNT_SETUP @JvmStatic fun launchOnboarding(context: Activity) { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { putExtra(EXTRA_DESTINATION, DESTINATION_ONBOARDING) data = NAVIGATION_ROUTE_ONBOARDING.toDeepLinkUri() flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK } context.startActivity(intent) Loading @@ -41,7 +36,7 @@ class FeatureLauncherActivity : ComponentActivity() { @JvmStatic fun launchSetupAccount(context: Activity) { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { putExtra(EXTRA_DESTINATION, DESTINATION_SETUP_ACCOUNT) data = NAVIGATION_ROUTE_ACCOUNT_SETUP.toDeepLinkUri() } context.startActivity(intent) } Loading
feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt +1 −2 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ import org.koin.compose.koinInject @Composable fun FeatureLauncherNavHost( navController: NavHostController, startDestination: String?, onBack: () -> Unit, modifier: Modifier = Modifier, importSettingsLauncher: ImportSettingsLauncher = koinInject(), Loading @@ -23,7 +22,7 @@ fun FeatureLauncherNavHost( ) { NavHost( navController = navController, startDestination = startDestination ?: NAVIGATION_ROUTE_ONBOARDING, startDestination = NAVIGATION_ROUTE_ONBOARDING, modifier = modifier, ) { onboardingRoute( Loading
feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt +0 −2 Original line number Diff line number Diff line Loading @@ -12,7 +12,6 @@ import app.k9mail.feature.launcher.navigation.FeatureLauncherNavHost @Composable fun FeatureLauncherApp( startDestination: String?, modifier: Modifier = Modifier, ) { val navController = rememberNavController() Loading @@ -28,7 +27,6 @@ fun FeatureLauncherApp( FeatureLauncherNavHost( navController = navController, startDestination = startDestination, onBack = { activity.finish() }, ) } Loading