From f6f56ff7aa6694735a3e1839d0df5b12b9bfef6e Mon Sep 17 00:00:00 2001 From: Arthur Ivanets Date: Sun, 17 May 2020 03:08:44 +0300 Subject: [PATCH] Expand the Navigation specific APIs --- common/constants.gradle | 4 +- .../mvvm/navigation/MvvmActivity.kt | 52 ++++++++++++++----- .../mvvm/navigation/MvvmFragment.kt | 36 ++++++++++--- 3 files changed, 69 insertions(+), 23 deletions(-) diff --git a/common/constants.gradle b/common/constants.gradle index 66a3ec4..5e1ba93 100644 --- a/common/constants.gradle +++ b/common/constants.gradle @@ -54,8 +54,8 @@ project.ext { releaseRepoName = "maven" releaseUserOrg = "arthurlabs" releaseGroupId = "com.arthurivanets.mvvm" - releaseVersion = "1.5.0" - releaseVersionCode = 9 + releaseVersion = "1.6.0" + releaseVersionCode = 10 releaseWebsite = "https://github.com/arthur3486/android-mvvm" releaseLicense = ["Apache-2.0"] diff --git a/mvvm-navigation/src/main/java/com/arthurivanets/mvvm/navigation/MvvmActivity.kt b/mvvm-navigation/src/main/java/com/arthurivanets/mvvm/navigation/MvvmActivity.kt index 0dcb4c0..df1e3f5 100644 --- a/mvvm-navigation/src/main/java/com/arthurivanets/mvvm/navigation/MvvmActivity.kt +++ b/mvvm-navigation/src/main/java/com/arthurivanets/mvvm/navigation/MvvmActivity.kt @@ -22,10 +22,7 @@ import androidx.annotation.IdRes import androidx.annotation.LayoutRes import androidx.annotation.NavigationRes import androidx.databinding.ViewDataBinding -import androidx.navigation.NavController -import androidx.navigation.NavDirections -import androidx.navigation.Navigator -import androidx.navigation.findNavController +import androidx.navigation.* import androidx.navigation.fragment.NavHostFragment import com.arthurivanets.mvvm.BaseViewModel import com.arthurivanets.mvvm.MvvmActivity @@ -87,24 +84,53 @@ abstract class MvvmActivity(@LayoutRe * * @param destinationId the id of the destination screen (either the new Activity or Fragment) * @param extras the extra arguments to be passed to the destination screen + * @param navOptions + * @param navigationExtras + */ + protected fun navigate( + @IdRes destinationId : Int, + extras : Bundle? = null, + navOptions : NavOptions? = null, + navigationExtras : Navigator.Extras? = null + ) { + navController.navigate( + destinationId, + extras, + navOptions, + navigationExtras + ) + } + + + /** + * Navigates to the specified destination screen. + * + * @param directions the direction that leads to the destination screen. */ - protected fun navigate(@IdRes destinationId : Int, extras : Bundle? = null) { - navController.navigate(destinationId, extras) + protected fun navigate(directions : NavDirections) { + navController.navigate(directions) } /** * Navigates to the specified destination screen. * - * @param directions the direction that leads to the destiantion screen. + * @param directions the direction that leads to the destination screen. * @param navigationExtras */ - protected fun navigate(directions : NavDirections, navigationExtras : Navigator.Extras? = null) { - navigationExtras?.let { navExtras -> - navController.navigate(directions, navExtras) - } ?: run { - navController.navigate(directions) - } + protected fun navigate(directions : NavDirections, navigationExtras : Navigator.Extras) { + navController.navigate(directions, navigationExtras) + } + + + /** + * Navigates to the specified destination screen. + * + * @param directions the direction that leads to the destination screen. + * @param navOptions + */ + protected fun navigate(directions : NavDirections, navOptions : NavOptions) { + navController.navigate(directions, navOptions) } diff --git a/mvvm-navigation/src/main/java/com/arthurivanets/mvvm/navigation/MvvmFragment.kt b/mvvm-navigation/src/main/java/com/arthurivanets/mvvm/navigation/MvvmFragment.kt index 2d4a959..bdb9579 100644 --- a/mvvm-navigation/src/main/java/com/arthurivanets/mvvm/navigation/MvvmFragment.kt +++ b/mvvm-navigation/src/main/java/com/arthurivanets/mvvm/navigation/MvvmFragment.kt @@ -21,6 +21,7 @@ import androidx.annotation.IdRes import androidx.annotation.LayoutRes import androidx.databinding.ViewDataBinding import androidx.navigation.NavDirections +import androidx.navigation.NavOptions import androidx.navigation.Navigator import androidx.navigation.fragment.findNavController import com.arthurivanets.mvvm.BaseViewModel @@ -37,17 +38,19 @@ abstract class MvvmFragment(@LayoutRe * * @param destinationId the id of the destination screen (either the new Activity or Fragment) * @param extras the extra arguments to be passed to the destination screen + * @param navOptions * @param navigationExtras */ protected fun navigate( @IdRes destinationId : Int, extras : Bundle? = null, + navOptions : NavOptions? = null, navigationExtras : Navigator.Extras? = null ) { findNavController().navigate( destinationId, extras, - null, + navOptions, navigationExtras ) } @@ -56,15 +59,32 @@ abstract class MvvmFragment(@LayoutRe /** * Navigates to the specified destination screen. * - * @param directions the direction that leads to the destiantion screen. + * @param directions the direction that leads to the destination screen. + */ + protected fun navigate(directions : NavDirections) { + findNavController().navigate(directions) + } + + + /** + * Navigates to the specified destination screen. + * + * @param directions the direction that leads to the destination screen. + * @param navOptions + */ + protected fun navigate(directions : NavDirections, navOptions : NavOptions) { + findNavController().navigate(directions, navOptions) + } + + + /** + * Navigates to the specified destination screen. + * + * @param directions the direction that leads to the destination screen. * @param navigationExtras */ - protected fun navigate(directions : NavDirections, navigationExtras : Navigator.Extras? = null) { - navigationExtras?.let { navExtras -> - findNavController().navigate(directions, navExtras) - } ?: run { - findNavController().navigate(directions) - } + protected fun navigate(directions : NavDirections, navigationExtras : Navigator.Extras) { + findNavController().navigate(directions, navigationExtras) }