From e275fc6dbe84afa1c6dcff51ea34f35415a4f771 Mon Sep 17 00:00:00 2001 From: Derf Null Date: Wed, 7 Jun 2023 23:04:00 +0200 Subject: Fix edge case that allowed in-transit journeys with invalid destinations --- lib/Travelynx.pm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 6dd77fd..9dc1aff 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -519,6 +519,26 @@ sub startup { delete $journey->{edited}; delete $journey->{id}; + # users may force checkouts at stations that are not part of + # the train's scheduled (or real-time) route. re-adding those + # to in-transit violates the assumption that each train has + # a valid destination. Remove the target in this case. + my $route = JSON->new->decode( $journey->{route} ); + my $found_checkout_id; + for my $stop ( @{$route} ) { + if ( $stop->[1] == $journey->{checkout_station_id} ) { + $found_checkout_id = 1; + last; + } + } + if ( not $found_checkout_id ) { + $journey->{checkout_station_id} = undef; + $journey->{checkout_time} = undef; + $journey->{arr_platform} = undef; + $journey->{sched_arrival} = undef; + $journey->{real_arrival} = undef; + } + $self->in_transit->add_from_journey( db => $db, journey => $journey -- cgit v1.2.3