Skip to content

Commit

Permalink
Updates to Navigation 2.7.2 and deprecate navigation APIs (#207)
Browse files Browse the repository at this point in the history
* Updates to Navigation 2.7.2 and deprecate navigation APIs

* Ignore broken test for navigation APIs
  • Loading branch information
fornewid authored Sep 17, 2023
1 parent 4fc5066 commit b17d213
Show file tree
Hide file tree
Showing 10 changed files with 131 additions and 205 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,14 @@
*/
package soup.compose.material.motion.sample.ui

import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import soup.compose.material.motion.animation.materialSharedAxisZIn
import soup.compose.material.motion.animation.materialSharedAxisZOut
import soup.compose.material.motion.navigation.MaterialMotionNavHost
import soup.compose.material.motion.navigation.composable
import soup.compose.material.motion.navigation.rememberMaterialMotionNavController
import soup.compose.material.motion.sample.ui.circularreveal.CircularRevealScreen
import soup.compose.material.motion.sample.ui.demo.DemoScreen
import soup.compose.material.motion.sample.ui.material.elevationscale.MaterialElevationScaleScreen
Expand All @@ -47,16 +46,15 @@ enum class Destination(val route: String) {
AnimatedNavHost("AnimatedNavHost"),
}

@OptIn(ExperimentalAnimationApi::class)
@Composable
fun NavGraph(
startDestination: String = Destination.Home.route,
) {
val navController = rememberMaterialMotionNavController()
val navController = rememberNavController()
val upPress: () -> Unit = {
navController.navigateUp()
}
MaterialMotionNavHost(
NavHost(
navController = navController,
startDestination = startDestination,
modifier = Modifier.fillMaxSize(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,21 @@ import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.navigation.NavType
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import soup.compose.material.motion.animation.holdIn
import soup.compose.material.motion.animation.holdOut
import soup.compose.material.motion.animation.translateYIn
import soup.compose.material.motion.animation.translateYOut
import soup.compose.material.motion.navigation.MaterialMotionNavHost
import soup.compose.material.motion.navigation.composable
import soup.compose.material.motion.navigation.rememberMaterialMotionNavController
import soup.compose.material.motion.sample.ui.theme.SampleTheme

@OptIn(ExperimentalAnimationApi::class)
@Composable
fun DemoScreen(upPress: () -> Unit) {
val navController = rememberMaterialMotionNavController()
MaterialMotionNavHost(navController, startDestination = "library") {
val navController = rememberNavController()
NavHost(navController, startDestination = "library") {
composable(
"library",
enterTransition = { holdIn() },
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ kotlin = "1.8.22"

# Compose
activity = "1.7.0"
navigation = "2.6.0"
navigation = "2.7.2"
compose = "1.5.0"
composeCompiler = "1.4.8"

Expand Down
20 changes: 10 additions & 10 deletions navigation/api/current.api
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
// Signature format: 4.0
package soup.compose.material.motion.navigation {

@androidx.compose.animation.ExperimentalAnimationApi @androidx.navigation.Navigator.Name("materialMotionComposable") public final class MaterialMotionComposeNavigator extends androidx.navigation.Navigator<soup.compose.material.motion.navigation.MaterialMotionComposeNavigator.Destination> {
ctor public MaterialMotionComposeNavigator();
method public soup.compose.material.motion.navigation.MaterialMotionComposeNavigator.Destination createDestination();
@Deprecated @androidx.compose.animation.ExperimentalAnimationApi @androidx.navigation.Navigator.Name("materialMotionComposable") public final class MaterialMotionComposeNavigator extends androidx.navigation.Navigator<soup.compose.material.motion.navigation.MaterialMotionComposeNavigator.Destination> {
ctor @Deprecated public MaterialMotionComposeNavigator();
method @Deprecated public soup.compose.material.motion.navigation.MaterialMotionComposeNavigator.Destination createDestination();
}

@androidx.compose.animation.ExperimentalAnimationApi @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class MaterialMotionComposeNavigator.Destination extends androidx.navigation.NavDestination {
ctor public MaterialMotionComposeNavigator.Destination(soup.compose.material.motion.navigation.MaterialMotionComposeNavigator navigator, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedVisibilityScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
@Deprecated @androidx.compose.animation.ExperimentalAnimationApi @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class MaterialMotionComposeNavigator.Destination extends androidx.navigation.NavDestination {
ctor @Deprecated public MaterialMotionComposeNavigator.Destination(soup.compose.material.motion.navigation.MaterialMotionComposeNavigator navigator, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedVisibilityScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
}

public final class MaterialMotionNavHostKt {
method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void MaterialMotionNavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional String? route, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void MaterialMotionNavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition);
method @Deprecated @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void MaterialMotionNavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional String? route, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
method @Deprecated @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static void MaterialMotionNavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition);
}

public final class NavGraphBuilderKt {
method @androidx.compose.animation.ExperimentalAnimationApi public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedVisibilityScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
method @androidx.compose.animation.ExperimentalAnimationApi public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
method @Deprecated @androidx.compose.animation.ExperimentalAnimationApi public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedVisibilityScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
method @Deprecated @androidx.compose.animation.ExperimentalAnimationApi public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
}

public final class NavHostControllerKt {
method @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberMaterialMotionNavController(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>... navigators);
method @Deprecated @androidx.compose.animation.ExperimentalAnimationApi @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberMaterialMotionNavController(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>... navigators);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import soup.compose.material.motion.navigation.composable
import soup.compose.material.motion.navigation.navigation
import soup.compose.material.motion.navigation.rememberMaterialMotionNavController

@Suppress("DEPRECATION")
@OptIn(ExperimentalAnimationApi::class)
@RunWith(AndroidJUnit4::class)
class MaterialMotionNavHostTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.get
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
Expand All @@ -33,13 +34,15 @@ import soup.compose.material.motion.navigation.MaterialMotionNavHost
import soup.compose.material.motion.navigation.composable
import soup.compose.material.motion.navigation.rememberMaterialMotionNavController

@Suppress("DEPRECATION")
@OptIn(ExperimentalAnimationApi::class)
@RunWith(AndroidJUnit4::class)
class NavHostControllerTest {

@get:Rule
val composeTestRule = createComposeRule()

@Ignore
@Test
fun testRememberMaterialMotionNavController() {
lateinit var navController: NavHostController
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@ import soup.compose.material.motion.navigation.MaterialMotionComposeNavigator.De
* set a valid [Composable] by setting it directly on an instantiated [Destination] or calling
* [composable].
*/
@Deprecated(
message = "Replace with ComposeNavigator from Androidx Navigation and change import " +
"from soup.compose.material.motion.navigation.MaterialMotionComposeNavigator to " +
"androidx.navigation.compose.ComposeNavigator.",
replaceWith = ReplaceWith(
"ComposeNavigator",
"androidx.navigation.compose.ComposeNavigator"
)
)
@ExperimentalAnimationApi
@Navigator.Name("materialMotionComposable")
public class MaterialMotionComposeNavigator : Navigator<Destination>() {
Expand Down Expand Up @@ -66,6 +75,14 @@ public class MaterialMotionComposeNavigator : Navigator<Destination>() {
/**
* NavDestination specific to [MaterialMotionComposeNavigator]
*/
@Deprecated(
message = "Replace with Androidx ComposeNavigator.Destination and change import to " +
"androidx.navigation.compose.ComposeNavigator.",
replaceWith = ReplaceWith(
"ComposeNavigator.Destination",
"androidx.navigation.compose.ComposeNavigator"
)
)
@ExperimentalAnimationApi
@NavDestination.ClassType(Composable::class)
public class Destination(
Expand Down
Loading

0 comments on commit b17d213

Please sign in to comment.