diff --git a/cardinal-android/app/src/main/java/earth/maps/cardinal/transit/TransitousModels.kt b/cardinal-android/app/src/main/java/earth/maps/cardinal/transit/TransitousModels.kt index f4860440740c293d0fac008164276b435bd96a5f..000a7867d4ceb6fb2be0a99da9b90e59505c1ba8 100644 --- a/cardinal-android/app/src/main/java/earth/maps/cardinal/transit/TransitousModels.kt +++ b/cardinal-android/app/src/main/java/earth/maps/cardinal/transit/TransitousModels.kt @@ -22,6 +22,8 @@ import androidx.compose.ui.graphics.Color import androidx.core.graphics.toColorInt import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlin.time.ExperimentalTime +import kotlin.time.Instant @Serializable data class TransitStop( @@ -317,4 +319,9 @@ data class PlanResponse( val itineraries: List, val previousPageCursor: String, val nextPageCursor: String -) +) { + @OptIn(ExperimentalTime::class) + fun allItineraries(): List { + return itineraries.plus(direct).sortedBy { itinerary -> Instant.parse(itinerary.endTime) } + } +} diff --git a/cardinal-android/app/src/main/java/earth/maps/cardinal/transit/TransitousService.kt b/cardinal-android/app/src/main/java/earth/maps/cardinal/transit/TransitousService.kt index 8aa0e1ede223051e97180332c330537145c7e650..66626cde97171498b2a79a58f666f79b9d9f6efd 100644 --- a/cardinal-android/app/src/main/java/earth/maps/cardinal/transit/TransitousService.kt +++ b/cardinal-android/app/src/main/java/earth/maps/cardinal/transit/TransitousService.kt @@ -142,7 +142,8 @@ class TransitousService @Inject constructor(private val appPreferenceRepository: directRentalPropulsionTypes: List? = null, preTransitRentalPropulsionTypes: List? = null, postTransitRentalPropulsionTypes: List? = null, - numItineraries: Int = 5, + numItineraries: Int = 10, + maxItineraries: Int = 10, pageCursor: String? = null, timetableView: Boolean = true, withFares: Boolean = false, @@ -199,6 +200,7 @@ class TransitousService @Inject constructor(private val appPreferenceRepository: ) } parameter("numItineraries", numItineraries) + parameter("maxItineraries", maxItineraries) pageCursor?.let { parameter("pageCursor", it) } parameter("timetableView", timetableView) parameter("withFares", withFares) @@ -206,7 +208,7 @@ class TransitousService @Inject constructor(private val appPreferenceRepository: } val result = response.body() - Log.d(TAG, "Plan response: ${result.itineraries.size} itineraries") + Log.d(TAG, "Plan response: ${result.allItineraries()} itineraries (including direct)") emit(result) } catch (e: Exception) { diff --git a/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsScreen.kt b/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsScreen.kt index 74d0805a3b516ac1ce0b56c8755a61bfa1212814..2194e2adcedab5c5e643937fa9ff1d14a33d9db0 100644 --- a/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsScreen.kt +++ b/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsScreen.kt @@ -727,7 +727,7 @@ fun RouteDisplayHandler( } } } else { - onRouteUpdate(null, routeState.routes) + onRouteUpdate(null, emptyList()) } } } diff --git a/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsViewModel.kt b/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsViewModel.kt index 5cd2ba1bfb2091be9cde9c6ecea71c6eec658854..20a3594a4b980d013573f08cdb62f26d558bf6a6 100644 --- a/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsViewModel.kt +++ b/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsViewModel.kt @@ -191,7 +191,6 @@ class DirectionsViewModel @Inject constructor( transitousService.getPlan( from = LatLng(origin.latLng.latitude, origin.latLng.longitude), to = LatLng(destination.latLng.latitude, destination.latLng.longitude), - timetableView = false, withFares = true, ).collect { planResponse -> planStateRepository.setPlanResponse(planResponse) diff --git a/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/TransitDirectionsScreen.kt b/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/TransitDirectionsScreen.kt index d7bbb987f63be9a41a4679b32fe5026caed61c0a..e6437f621c819e0b344e021acfe98a787284d98b 100644 --- a/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/TransitDirectionsScreen.kt +++ b/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/TransitDirectionsScreen.kt @@ -113,9 +113,10 @@ private fun TransitTimelineResults( distanceUnit: Int, modifier: Modifier = Modifier ) { + val itineraries = planResponse.allItineraries() LazyColumn(modifier = modifier) { - items(planResponse.itineraries.size) { index -> - val itinerary = planResponse.itineraries.reversed()[index] + items(itineraries.size) { index -> + val itinerary = itineraries[index] TransitItineraryCard( itinerary = itinerary,