Bimba.git

commit 0dc1c9a8734f1e6f5717780cbb4f6f93b2fd5ef3

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