diff --git a/src/main/java/org/mtransit/android/commons/provider/status/GTFSRealTimeTripUpdatesProvider.kt b/src/main/java/org/mtransit/android/commons/provider/status/GTFSRealTimeTripUpdatesProvider.kt index f5d2c011..4d877a05 100644 --- a/src/main/java/org/mtransit/android/commons/provider/status/GTFSRealTimeTripUpdatesProvider.kt +++ b/src/main/java/org/mtransit/android/commons/provider/status/GTFSRealTimeTripUpdatesProvider.kt @@ -52,11 +52,10 @@ object GTFSRealTimeTripUpdatesProvider : MTLog.Loggable { val TRIP_UPDATE_MAX_VALIDITY_IN_MS = 1.hours.inWholeMilliseconds - val TRIP_UPDATE_VALIDITY_IN_MS = 1.minutes.inWholeMilliseconds + val TRIP_UPDATE_VALIDITY_IN_MS = 3.minutes.inWholeMilliseconds val TRIP_UPDATE_VALIDITY_IN_FOCUS_IN_MS = 30.seconds.inWholeMilliseconds val TRIP_UPDATE_MIN_DURATION_BETWEEN_REFRESH_IN_MS = 1.minutes.inWholeMilliseconds - val TRIP_UPDATE_MIN_DURATION_BETWEEN_REFRESH_IN_FOCUS_IN_MS = 10.seconds.inWholeMilliseconds @JvmStatic diff --git a/src/main/java/org/mtransit/android/commons/provider/vehiclelocations/GTFSRealTimeVehiclePositionsProvider.kt b/src/main/java/org/mtransit/android/commons/provider/vehiclelocations/GTFSRealTimeVehiclePositionsProvider.kt index 2ef4eed1..42303ebb 100644 --- a/src/main/java/org/mtransit/android/commons/provider/vehiclelocations/GTFSRealTimeVehiclePositionsProvider.kt +++ b/src/main/java/org/mtransit/android/commons/provider/vehiclelocations/GTFSRealTimeVehiclePositionsProvider.kt @@ -97,23 +97,32 @@ object GTFSRealTimeVehiclePositionsProvider : MTLog.Loggable { targetUUIDs to tripIds?.takeIf { it.isNotEmpty() } // no trip IDS == fallback to primary target UUID only }?.let { (targetUUIDs, tripIds) -> getCached( - primaryTargetUUID = filter.getPrimaryTargetUUIDs(this@getCached, ignoreDirection = ignoreDirection), + filter = filter, targetUUIDs = targetUUIDs, tripIds = tripIds, ) } - fun GTFSRealTimeProvider.getCached(primaryTargetUUID: Pair?, targetUUIDs: Map, tripIds: List?) = buildList { - tripIds?.let { // trip IDs preferred for all result filtered correctly - getCachedVehicleLocationsS(targetUUIDs.keys, tripIds)?.takeIf { it.isNotEmpty() } - } ?: primaryTargetUUID?.let { (providerTargetUUID, _) -> - // fallback to: ignore TRIP IDS (outdated?) and try using primary target UUID only - // - only works if Route (& Direction) provided - // -> can show vehicle in wrong direction - getCachedVehicleLocationsS(providerTargetUUID) - }?.let { - addAll(it) - } + fun GTFSRealTimeProvider.getCached(filter: VehicleLocationProviderContract.Filter, targetUUIDs: Map, tripIds: List?) = buildList { + ( + // 1 - trip IDs preferred for all result filtered correctly + tripIds?.let { + getCachedVehicleLocationsS(targetUUIDs.keys, tripIds = it) + }?.takeIf { it.isNotEmpty() } + // 2 - fallback to: ignore TRIP IDS (outdated?) and try using primary target UUID only + // - only works if Route (& Direction) provided + // -> can show vehicle in wrong direction + ?: filter.getPrimaryTargetUUIDs(this@getCached, ignoreDirection = ignoreDirection)?.let { (providerTargetUUID, _) -> + getCachedVehicleLocationsS(setOf(providerTargetUUID), tripIds = null) + }?.takeIf { it.isNotEmpty() } + // 3 - fallback to: for ignore direction + ?: if (ignoreDirection) null else filter.getPrimaryTargetUUIDs(this@getCached, ignoreDirection = true)?.let { (providerTargetUUID, _) -> + getCachedVehicleLocationsS(setOf(providerTargetUUID), tripIds = null) + }?.takeIf { it.isNotEmpty() } + ) + ?.let { + addAll(it) + } }.map { it.copy(targetUUID = targetUUIDs[it.targetUUID] ?: it.targetUUID) } @JvmStatic diff --git a/src/main/java/org/mtransit/android/commons/provider/vehiclelocations/VehicleLocationProvider.kt b/src/main/java/org/mtransit/android/commons/provider/vehiclelocations/VehicleLocationProvider.kt index 17c4b608..55530b51 100644 --- a/src/main/java/org/mtransit/android/commons/provider/vehiclelocations/VehicleLocationProvider.kt +++ b/src/main/java/org/mtransit/android/commons/provider/vehiclelocations/VehicleLocationProvider.kt @@ -124,10 +124,6 @@ abstract class VehicleLocationProvider : MTContentProvider(), } } - fun

P.getCachedVehicleLocationsS( - targetUUID: String, - ) = getCachedVehicleLocationsS(setOf(targetUUID), tripIds = null) - fun

P.getCachedVehicleLocationsS( targetUUIDs: Collection, tripIds: List? = null,