Commit ead18f12 authored by Daniel Friesel's avatar Daniel Friesel
Browse files

Fix implicit checkout when checking in from a related station

Previously, realtime data was missing in this case
parent 44830735
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -554,6 +554,21 @@ sub startup {
			my ($train)
			  = first { $_->train_id eq $train_id } @{ $status->{results} };

          # When a checkout is triggered by a checkin, there is an edge case
          # with related stations.
          # Assume a user travels from A to B1, then from B2 to C. B1 and B2 are
          # relatd stations (e.g. "Frankfurt Hbf" and "Frankfurt Hbf(tief)").
          # Now, if they check in for the journey from B2 to C, and have not yet
          # checked out of the previous train, $train is undef as B2 is not B1.
          # Redo the request with with_related => 1 to avoid this case.
          # While at it, we increase the lookahead to handle long journeys as
          # well.
			if ( not $train ) {
				$status = $self->get_departures( $station, 120, 180, 1 );
				($train)
				  = first { $_->train_id eq $train_id } @{ $status->{results} };
			}

			# Store the intended checkout station regardless of this operation's
			# success.
			my $new_checkout_station_id = $self->get_station_id(