From c37537bd6772fa5e90b1b2d74570b86d811da468 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Tue, 9 Mar 2021 09:08:32 +0000 Subject: [PATCH] Added NavController navigateSafe extension function --- .../com/rtbishop/look4sat/utility/Extensions.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt b/app/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt index 4de3fe68..dbcfd1de 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt @@ -17,6 +17,11 @@ */ package com.rtbishop.look4sat.utility +import android.os.Bundle +import androidx.annotation.IdRes +import androidx.navigation.NavController +import androidx.navigation.NavOptions +import androidx.navigation.Navigator import com.github.amsacode.predict4java.GroundStationPosition import com.github.amsacode.predict4java.Satellite import java.util.concurrent.TimeUnit @@ -38,3 +43,15 @@ fun Double.round(decimals: Int): Double { fun Satellite.getPredictor(stationPosition: GroundStationPosition): PassPredictor { return PassPredictor(this, stationPosition) } + +fun NavController.navigateSafe( + @IdRes resId: Int, + args: Bundle? = null, + navOptions: NavOptions? = null, + navExtras: Navigator.Extras? = null +) { + val action = currentDestination?.getAction(resId) ?: graph.getAction(resId) + if (action != null && currentDestination?.id != action.destinationId) { + navigate(resId, args, navOptions, navExtras) + } +}