Skip to content

Commit 2b14379

Browse files
committed
add debug logs to callback flows
1 parent 35ecac3 commit 2b14379

File tree

2 files changed

+70
-75
lines changed
  • instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/coroutines
  • libnavigation-base/src/main/java/com/mapbox/navigation/base/trip/model

2 files changed

+70
-75
lines changed

instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/coroutines/Adapters.kt

Lines changed: 63 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
package com.mapbox.navigation.instrumentation_tests.utils.coroutines
44

5+
import android.util.Log
56
import com.mapbox.api.directions.v5.models.BannerInstructions
67
import com.mapbox.api.directions.v5.models.RouteOptions
78
import com.mapbox.api.directions.v5.models.VoiceInstructions
@@ -36,67 +37,49 @@ import kotlin.coroutines.resume
3637
import kotlin.coroutines.suspendCoroutine
3738

3839
fun MapboxNavigation.routesUpdates(): Flow<RoutesUpdatedResult> {
39-
val navigation = this
40-
return callbackFlow {
41-
val observer = RoutesObserver {
42-
trySend(it)
43-
}
44-
navigation.registerRoutesObserver(observer)
45-
awaitClose {
46-
navigation.unregisterRoutesObserver(observer)
47-
}
48-
}
40+
return loggedCallbackFlow(
41+
{ RoutesObserver(it) },
42+
{ registerRoutesObserver(it) },
43+
{ unregisterRoutesObserver(it) },
44+
"RoutesUpdatedResult"
45+
)
4946
}
5047

5148
@ExperimentalPreviewMapboxNavigationAPI
5249
fun MapboxNavigation.routesPreviewUpdates(): Flow<RoutesPreviewUpdate> {
53-
val navigation = this
54-
return callbackFlow {
55-
val observer = RoutesPreviewObserver {
56-
trySend(it)
57-
}
58-
navigation.registerRoutesPreviewObserver(observer)
59-
awaitClose {
60-
navigation.unregisterRoutesPreviewObserver(observer)
61-
}
62-
}
50+
return loggedCallbackFlow(
51+
{ RoutesPreviewObserver(it) },
52+
{ registerRoutesPreviewObserver(it) },
53+
{ unregisterRoutesPreviewObserver(it) },
54+
"RoutesPreviewUpdate"
55+
)
6356
}
6457

6558
fun MapboxNavigation.routeProgressUpdates(): Flow<RouteProgress> {
66-
val navigation = this
67-
return callbackFlow {
68-
val observer = RouteProgressObserver {
69-
trySend(it)
70-
}
71-
navigation.registerRouteProgressObserver(observer)
72-
awaitClose {
73-
navigation.unregisterRouteProgressObserver(observer)
74-
}
75-
}
59+
return loggedCallbackFlow(
60+
{ RouteProgressObserver(it) },
61+
{ registerRouteProgressObserver(it) },
62+
{ unregisterRouteProgressObserver(it) },
63+
"RouteProgress"
64+
)
7665
}
7766

7867
fun MapboxNavigation.offRouteUpdates(): Flow<Boolean> {
79-
val navigation = this
80-
return callbackFlow {
81-
val observer = OffRouteObserver { trySend(it) }
82-
navigation.registerOffRouteObserver(observer)
83-
awaitClose {
84-
navigation.unregisterOffRouteObserver(observer)
85-
}
86-
}
68+
return loggedCallbackFlow(
69+
{ OffRouteObserver(it) },
70+
{ registerOffRouteObserver(it) },
71+
{ unregisterOffRouteObserver(it) },
72+
"OffRoute"
73+
)
8774
}
8875

8976
fun MapboxNavigation.roadObjectsOnRoute(): Flow<List<UpcomingRoadObject>> {
90-
val navigation = this
91-
return callbackFlow {
92-
val observer = RoadObjectsOnRouteObserver {
93-
trySend(it)
94-
}
95-
navigation.registerRoadObjectsOnRouteObserver(observer)
96-
awaitClose {
97-
navigation.unregisterRoadObjectsOnRouteObserver(observer)
98-
}
99-
}
77+
return loggedCallbackFlow(
78+
{ RoadObjectsOnRouteObserver(it) },
79+
{ registerRoadObjectsOnRouteObserver(it) },
80+
{ unregisterRoadObjectsOnRouteObserver(it) },
81+
"UpcomingRoadObject"
82+
)
10083
}
10184

10285
suspend fun MapboxNavigation.requestRoutes(options: RouteOptions) =
@@ -157,33 +140,45 @@ fun RouteRequestResult.getSuccessfulResultOrThrowException(): RouteRequestResult
157140
}
158141

159142
suspend fun MapboxNavigation.bannerInstructions(): Flow<BannerInstructions> {
160-
val navigation = this
161-
return callbackFlow {
162-
val observer = BannerInstructionsObserver {
163-
trySend(it)
164-
}
165-
navigation.registerBannerInstructionsObserver(observer)
166-
awaitClose {
167-
navigation.unregisterBannerInstructionsObserver(observer)
168-
}
169-
}
143+
return loggedCallbackFlow(
144+
{ BannerInstructionsObserver(it) },
145+
{ registerBannerInstructionsObserver(it) },
146+
{ unregisterBannerInstructionsObserver(it) },
147+
"BannerInstructions"
148+
)
170149
}
171150

172151
suspend fun MapboxNavigation.voiceInstructions(): Flow<VoiceInstructions> {
173-
val navigation = this
174-
return callbackFlow {
175-
val observer = VoiceInstructionsObserver {
176-
trySend(it)
177-
}
178-
navigation.registerVoiceInstructionsObserver(observer)
179-
awaitClose {
180-
navigation.unregisterVoiceInstructionsObserver(observer)
181-
}
182-
}
152+
return loggedCallbackFlow(
153+
{ VoiceInstructionsObserver(it) },
154+
{ registerVoiceInstructionsObserver(it) },
155+
{ unregisterVoiceInstructionsObserver(it) },
156+
"VoiceInstructions"
157+
)
183158
}
184159

185160
suspend fun MapboxHistoryRecorder.stopRecording(): String? = suspendCoroutine { cont ->
186161
stopRecording { path ->
187162
cont.resume(path)
188163
}
189164
}
165+
166+
fun <T, OBSERVER> loggedCallbackFlow(
167+
observerCreator: (block: (T) -> Unit) -> OBSERVER,
168+
observerRegistrator: (OBSERVER) -> Unit,
169+
observerUnregistrator: (OBSERVER) -> Unit,
170+
tag: String,
171+
): Flow<T> {
172+
return callbackFlow {
173+
var lastUpdate: T? = null
174+
val observer = observerCreator {
175+
lastUpdate = it
176+
trySend(it)
177+
}
178+
observerRegistrator(observer)
179+
awaitClose {
180+
Log.d("[$tag]", "Last update: $lastUpdate")
181+
observerUnregistrator(observer)
182+
}
183+
}
184+
}

libnavigation-base/src/main/java/com/mapbox/navigation/base/trip/model/RouteProgress.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,21 +135,21 @@ class RouteProgress internal constructor(
135135
override fun toString(): String {
136136
return "RouteProgress(" +
137137
"navigationRoute=$navigationRoute, " +
138-
"bannerInstructions=$bannerInstructions, " +
139-
"voiceInstructions=$voiceInstructions, " +
140138
"currentState=$currentState, " +
141-
"currentLegProgress=$currentLegProgress, " +
142-
"upcomingStepPoints=$upcomingStepPoints, " +
143139
"inTunnel=$inTunnel, " +
144140
"distanceRemaining=$distanceRemaining, " +
145141
"distanceTraveled=$distanceTraveled, " +
146142
"durationRemaining=$durationRemaining, " +
147143
"fractionTraveled=$fractionTraveled, " +
148-
"remainingWaypoints=$remainingWaypoints, " +
149-
"upcomingRoadObjects=$upcomingRoadObjects, " +
150144
"stale=$stale, " +
151145
"routeAlternativeId=$routeAlternativeId, " +
152-
"currentRouteGeometryIndex=$currentRouteGeometryIndex" +
146+
"currentRouteGeometryIndex=$currentRouteGeometryIndex, " +
147+
"currentLegProgress=$currentLegProgress, " +
148+
"bannerInstructions=$bannerInstructions, " +
149+
"voiceInstructions=$voiceInstructions, " +
150+
"upcomingStepPoints=$upcomingStepPoints, " +
151+
"remainingWaypoints=$remainingWaypoints, " +
152+
"upcomingRoadObjects=$upcomingRoadObjects" +
153153
")"
154154
}
155155
}

0 commit comments

Comments
 (0)