From 85022709d75940a3f84cdbe462f9b261b38fc69e Mon Sep 17 00:00:00 2001 From: Birte Kristina Friesel Date: Sat, 19 Aug 2023 10:06:15 +0200 Subject: API: fix checkin with toStation and checkout endpoints Broken by 38ad42b42cbf6da6254a2498a2fc553507cb3f18 --- lib/Travelynx/Controller/Api.pm | 63 +++++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/lib/Travelynx/Controller/Api.pm b/lib/Travelynx/Controller/Api.pm index d0ebc1b..8ff98de 100755 --- a/lib/Travelynx/Controller/Api.pm +++ b/lib/Travelynx/Controller/Api.pm @@ -280,15 +280,20 @@ sub travel_v1 { # the user may not have provided the correct to_station, so # request related stations for checkout. - my ( $train2, $error ) = $self->checkout( + return $self->checkout_p( station => $to_station, force => 0, uid => $uid, with_related => 1, ); - if ($error) { - return Mojo::Promise->reject($error); - } + } + return Mojo::Promise->resolve; + } + )->then( + sub { + my ( undef, $error ) = @_; + if ($error) { + return Mojo::Promise->reject($error); } $self->render( json => { @@ -334,33 +339,43 @@ sub travel_v1 { ); } + $self->render_later; + # the user may not have provided the correct to_station, so # request related stations for checkout. - my ( $train, $error ) = $self->checkout( + $self->checkout_p( station => $to_station, force => $payload->{force} ? 1 : 0, uid => $uid, with_related => 1, - ); - if ($error) { - $self->render( - json => { - success => \0, - deprecated => \0, - error => 'Checkout error: ' . $error, - status => $self->get_user_status_json_v1( uid => $uid ) - } - ); - } - else { - $self->render( - json => { - success => \1, - deprecated => \0, - status => $self->get_user_status_json_v1( uid => $uid ) + )->then( + sub { + my ( $train, $error ) = @_; + if ($error) { + return Mojo::Promise->reject($error); } - ); - } + $self->render( + json => { + success => \1, + deprecated => \0, + status => $self->get_user_status_json_v1( uid => $uid ) + } + ); + return; + } + )->catch( + sub { + my ($err) = @_; + $self->render( + json => { + success => \0, + deprecated => \0, + error => 'Checkout error: ' . $err, + status => $self->get_user_status_json_v1( uid => $uid ) + } + ); + } + )->wait; } elsif ( $payload->{action} eq 'undo' ) { my $error = $self->undo( 'in_transit', $uid ); -- cgit v1.2.3