Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 524e2156 authored by Ellen Poe's avatar Ellen Poe
Browse files

feat: show direct transit itineraries

parent 80bb5c8c
Loading
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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<Itinerary>,
    val previousPageCursor: String,
    val nextPageCursor: String
)
) {
    @OptIn(ExperimentalTime::class)
    fun allItineraries(): List<Itinerary> {
        return itineraries.plus(direct).sortedBy { itinerary -> Instant.parse(itinerary.endTime) }
    }
}
+4 −2
Original line number Diff line number Diff line
@@ -142,7 +142,8 @@ class TransitousService @Inject constructor(private val appPreferenceRepository:
        directRentalPropulsionTypes: List<String>? = null,
        preTransitRentalPropulsionTypes: List<String>? = null,
        postTransitRentalPropulsionTypes: List<String>? = 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<PlanResponse>()
            Log.d(TAG, "Plan response: ${result.itineraries.size} itineraries")
            Log.d(TAG, "Plan response: ${result.allItineraries()} itineraries (including direct)")

            emit(result)
        } catch (e: Exception) {
+1 −1
Original line number Diff line number Diff line
@@ -727,7 +727,7 @@ fun RouteDisplayHandler(
                }
            }
        } else {
            onRouteUpdate(null, routeState.routes)
            onRouteUpdate(null, emptyList())
        }
    }
}
+0 −1
Original line number Diff line number Diff line
@@ -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)
+3 −2
Original line number Diff line number Diff line
@@ -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,