Author: Adam Evyčędo <git@apiote.xyz>
reverse journeys for arrive-by
%!v(PANIC=String method: strings: negative Repeat count)
diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/api/transitousJourney.kt b/app/src/main/java/xyz/apiote/bimba/czwek/api/transitousJourney.kt
index ea2b5119ea292e2e56365a8fd389e567141fa5d0..99032bc0fe4282813440964a366394adfdc3148d 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/api/transitousJourney.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/api/transitousJourney.kt
@@ -42,8 +42,6 @@ if (!isNetworkAvailable(context)) {
throw TrafficResponseException(0, "", Error(0, R.string.error_offline, R.drawable.error_net))
}
- // FIXME arrive-by shows wierd results
-
return withContext(Dispatchers.IO) {
val client = OkHttpClient.Builder()
.callTimeout(Duration.ofSeconds(60))
@@ -61,7 +59,7 @@ arriveBy = params.timeReference == TimeReference.ARRIVE_BY,
requireBikeTransport = params.bicycle,
pedestrianProfile = if (params.wheelchairAccessible) PedestrianProfile.WHEELCHAIR else PedestrianProfile.FOOT,
)
- response.itineraries.map {
+ val journeys = response.itineraries.map {
val legs: List<Leg> = it.legs.map {
Leg(
Event(
@@ -130,6 +128,11 @@ it.startTime.atZoneSameInstant(ZoneId.systemDefault()), it.endTime.atZoneSameInstant(
ZoneId.systemDefault()
), legs
)
+ }
+ if (params.timeReference == TimeReference.ARRIVE_BY) {
+ journeys.reversed()
+ } else {
+ journeys
}
}
}
diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/journey/JourneyFragment.kt b/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/journey/JourneyFragment.kt
index a9809b0700447743d49576cfda64c2b01392a0e6..eeed26a59263305d83f91c1defe7dc15a37e4768 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/journey/JourneyFragment.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/journey/JourneyFragment.kt
@@ -469,7 +469,7 @@ isDestinationClean()
} else if (source == DashboardViewModel.DEST_KEY) {
isOriginClean()
} else {
- TODO("throw exception")
+ throw IllegalArgumentException("source must be one of ${DashboardViewModel.ORIGIN_KEY}, ${DashboardViewModel.DEST_KEY}. found $source")
}
private fun chipifyOrigin(place: Place?) {
diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/Journeys.kt b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/Journeys.kt
index c26636eec2214fb921c65c5087291008fa735904..ff1d71676d397e60dcf7203f80d6cfa180069dc9 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/Journeys.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/Journeys.kt
@@ -52,7 +52,7 @@ @SuppressLint("InflateParams")
val legView = inflater.inflate(R.layout.journey_leg, null, false)
val legOrigin = legView.findViewById<TextView>(R.id.leg_origin)
- if (it.origin.stop.name.isBlank() || it.origin.stop.name == "START") {
+ if (it.origin.stop.name.isBlank() || it.origin.stop.name in arrayOf("START", "END")) {
legOrigin.visibility = View.GONE
} else {
legOrigin.apply {
@@ -98,7 +98,7 @@ context.getString(R.string.journey_stops_headsign, stops, headsign)
}
val legDestination = legView.findViewById<TextView>(R.id.leg_destination)
- if (it.destination.stop.name.isBlank() || it.destination.stop.name == "END") {
+ if (it.destination.stop.name.isBlank() || it.destination.stop.name in arrayOf("START", "END")) {
legDestination.visibility = View.GONE
} else {
legDestination.apply {
diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysActivity.kt b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysActivity.kt
index 11bc9208d74abe424f25c39fa4ff5c4945ae2445..ad9c1ea0427a21dabd5fbd54f144587e85f027dd 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysActivity.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/journeys/JourneysActivity.kt
@@ -92,13 +92,13 @@ journeysViewModel = ViewModelProvider(this)[JourneysViewModel::class.java]
ViewCompat.setOnApplyWindowInsetsListener(binding.journeys) { v, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
- v.updatePadding(bottom = insets.bottom + dpToPixelI(16f))
+ val l = windowInsets.displayCutout?.safeInsetLeft?.takeIf { it > 0 } ?: insets.left
+ v.updatePadding(bottom = insets.bottom + dpToPixelI(16f), left = l)
v.updateLayoutParams<ViewGroup.MarginLayoutParams> {
if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
topMargin = insets.top + dpToPixelI(16f)
}
}
- // TODO left/right notch
WindowInsetsCompat.CONSUMED
}
@@ -217,7 +217,7 @@ val originMarker = Marker(binding.map).apply {
position = GeoPoint(origin.latitude, origin.longitude)
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM)
icon = AppCompatResources.getDrawable(
- this@JourneysActivity, R.drawable.pin // TODO R.drawable.legOrigin
+ this@JourneysActivity, R.drawable.pin
)
setOnMarkerClickListener { marker, map ->
true
@@ -229,7 +229,7 @@ val destinationMarker = Marker(binding.map).apply {
position = GeoPoint(destination.latitude, destination.longitude)
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM)
icon = AppCompatResources.getDrawable(
- this@JourneysActivity, R.drawable.pin // TODO R.drawable.legDestination
+ this@JourneysActivity, R.drawable.pin
)
setOnMarkerClickListener { marker, map ->
true