@@ -10,7 +10,6 @@ import com.mapbox.navigation.base.ExperimentalMapboxNavigationAPI
10
10
import com.mapbox.navigation.base.internal.factory.RoadFactory
11
11
import com.mapbox.navigation.base.internal.factory.TripNotificationStateFactory.buildTripNotificationState
12
12
import com.mapbox.navigation.base.internal.route.refreshNativePeer
13
- import com.mapbox.navigation.base.internal.utils.internalWaypoints
14
13
import com.mapbox.navigation.base.route.NavigationRoute
15
14
import com.mapbox.navigation.base.trip.model.RouteLegProgress
16
15
import com.mapbox.navigation.base.trip.model.RouteProgress
@@ -31,7 +30,7 @@ import com.mapbox.navigation.core.trip.session.eh.EHorizonObserver
31
30
import com.mapbox.navigation.core.trip.session.eh.EHorizonSubscriptionManager
32
31
import com.mapbox.navigation.navigator.internal.MapboxNativeNavigator
33
32
import com.mapbox.navigation.navigator.internal.MapboxNativeNavigatorImpl
34
- import com.mapbox.navigation.navigator.internal.TripStatus
33
+ import com.mapbox.navigation.navigator.internal.utils.calculateRemainingWaypoints
35
34
import com.mapbox.navigation.utils.internal.JobControl
36
35
import com.mapbox.navigation.utils.internal.ThreadController
37
36
import com.mapbox.navigation.utils.internal.ifNonNull
@@ -48,7 +47,6 @@ import kotlinx.coroutines.Job
48
47
import kotlinx.coroutines.cancelChildren
49
48
import kotlinx.coroutines.launch
50
49
import java.util.concurrent.CopyOnWriteArraySet
51
- import kotlin.math.max
52
50
53
51
/* *
54
52
* Default implementation of [TripSession]
@@ -75,7 +73,6 @@ internal class MapboxTripSession(
75
73
76
74
private companion object {
77
75
private const val LOG_CATEGORY = " MapboxTripSession"
78
- private const val INDEX_OF_INITIAL_LEG_TARGET = 1
79
76
}
80
77
81
78
override suspend fun setRoutes (
@@ -356,7 +353,7 @@ internal class MapboxTripSession(
356
353
nativeBannerInstruction?.index
357
354
)
358
355
}
359
- val remainingWaypoints = calculateRemainingWaypoints(tripStatus )
356
+ val remainingWaypoints = tripStatus. calculateRemainingWaypoints()
360
357
val routeProgress = getRouteProgressFrom(
361
358
tripStatus.route,
362
359
tripStatus.navigationStatus,
@@ -378,33 +375,6 @@ internal class MapboxTripSession(
378
375
triggerVoiceInstructionEvent(routeProgress, status)
379
376
isOffRoute = tripStatus.navigationStatus.routeState == RouteState .OFF_ROUTE
380
377
}
381
-
382
- private fun calculateRemainingWaypoints (tripStatus : TripStatus ): Int {
383
- val routeCoordinates = tripStatus.route?.internalWaypoints()
384
- return if (routeCoordinates != null ) {
385
- val waypointsCount = routeCoordinates.size
386
- val nextWaypointIndex = normalizeNextWaypointIndex(
387
- tripStatus.navigationStatus.nextWaypointIndex
388
- )
389
- return waypointsCount - nextWaypointIndex
390
- } else {
391
- 0
392
- }
393
- }
394
-
395
- /* *
396
- * On the Android side, we always start navigation from the current position.
397
- * So we expect that the next waypoint index will not be less than 1.
398
- * But the native part considers the origin as a usual waypoint.
399
- * It can return the next waypoint index 0. Be careful, this case isn't easy to reproduce.
400
- *
401
- * For example, nextWaypointIndex=0 leads to an incorrect rerouting.
402
- * We don't want to get to an initial position even it hasn't been reached yet.
403
- */
404
- private fun normalizeNextWaypointIndex (nextWaypointIndex : Int ) = max(
405
- INDEX_OF_INITIAL_LEG_TARGET ,
406
- nextWaypointIndex
407
- )
408
378
}
409
379
410
380
/* *
0 commit comments