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) + } +}