From fce749ba3a2db8de9f197d1bde277301468b8f1b Mon Sep 17 00:00:00 2001 From: fbachus Date: Wed, 22 Jul 2026 01:35:20 +0200 Subject: [PATCH] feat(transport_helper): add arrivalTime for more precision helpful when vehicles are waiting on-station should be covered by fallbacks without introducing nullability down the line --- lib/transport_helper.dart | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/transport_helper.dart b/lib/transport_helper.dart index 23cbd6a..89fcabf 100644 --- a/lib/transport_helper.dart +++ b/lib/transport_helper.dart @@ -758,6 +758,7 @@ class Departure { String vehicleId; String vehicleName; String stationId; + DateTime arrivalTime; DateTime departureTime; Departure({ @@ -765,6 +766,7 @@ class Departure { required this.vehicleId, required this.vehicleName, required this.stationId, + required this.arrivalTime, required this.departureTime, }); @@ -774,6 +776,7 @@ class Departure { "vehicle": vehicleId, "vehiclename": vehicleName, "station": stationId, + "arrivaltime": arrivalTime, "departuretime": departureTime, }; } @@ -784,6 +787,7 @@ class Departure { vehicleId: map["vehicle"] as String, vehicleName: map["vehiclename"] as String, stationId: map["station"] as String, + arrivalTime: map["arrivaltime"] as DateTime, departureTime: map["departuretime"] as DateTime, ); } @@ -804,11 +808,30 @@ class Departure { // } catch (e) { // station.dbUpdate(); // } + DateTime? arrDateTime; + DateTime? depDateTime; + String? arrivalDate = json["arrDate"]; + String? arrivalTime = json["arrTime"]; + if (arrivalDate != null && arrivalTime != null) { + arrDateTime = DateTime.parse('${arrivalDate}T$arrivalTime'); + } + + String? departureDate = json["depDate"] ?? json["date"]; + String? departureTime = json["depTime"] ?? json["time"]; + if (departureDate != null && departureTime != null) { + depDateTime = DateTime.parse('${departureDate}T$departureTime'); + } + return Departure( vehicleId: vehicle.id, vehicleName: vehicle.name, stationId: station.id, - departureTime: DateTime.parse('${json["date"]}T${json["time"]}'), + arrivalTime: + arrDateTime ?? + depDateTime as DateTime, // one of these has to be in the json + departureTime: + depDateTime ?? + arrDateTime as DateTime, // one of these has to be in the json ); } @@ -920,4 +943,4 @@ enum VehicleType { subway, regionalTrain, PLACEHOLDER, -} \ No newline at end of file +}