From 167b01fa4264a8193ff3cbd9d3f1741f5702235a Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 16 Feb 2022 20:56:28 +0100 Subject: link traewelling profile from travelynx profile; show traewelling status --- lib/Travelynx.pm | 21 +++++++++++++++++++++ lib/Travelynx/Controller/Traewelling.pm | 7 ++++--- lib/Travelynx/Helper/Traewelling.pm | 7 ++++--- templates/_checked_in.html.ep | 14 ++++++++++++++ templates/_public_status_card.html.ep | 8 ++++++-- templates/traewelling.html.ep | 6 +++--- 6 files changed, 52 insertions(+), 11 deletions(-) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 8e29114..40ca0a5 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -1822,6 +1822,27 @@ sub startup { comment => $in_transit->{user_data}{comment}, }; + my $traewelling = $self->traewelling->get( + uid => $uid, + db => $db + ); + if ( $traewelling->{latest_run} + >= epoch_to_dt( $in_transit->{checkin_ts} ) ) + { + $ret->{traewelling} = $traewelling; + if ( @{ $traewelling->{data}{log} // [] } + and ( my $log_entry = $traewelling->{data}{log}[0] ) ) + { + if ( $log_entry->[2] ) { + $ret->{traewelling_status} = $log_entry->[2]; + $ret->{traewelling_url} + = 'https://traewelling.de/status/' + . $log_entry->[2]; + } + $ret->{traewelling_log_latest} = $log_entry->[1]; + } + } + my @parsed_messages; for my $message ( @{ $ret->{messages} // [] } ) { my ( $ts, $msg ) = @{$message}; diff --git a/lib/Travelynx/Controller/Traewelling.pm b/lib/Travelynx/Controller/Traewelling.pm index d3e6d6c..21fa3e9 100644 --- a/lib/Travelynx/Controller/Traewelling.pm +++ b/lib/Travelynx/Controller/Traewelling.pm @@ -1,4 +1,5 @@ package Travelynx::Controller::Traewelling; + # Copyright (C) 2020 Daniel Friesel # # SPDX-License-Identifier: AGPL-3.0-or-later @@ -78,10 +79,10 @@ sub settings { elsif ( $self->param('action') and $self->param('action') eq 'config' ) { $self->traewelling->set_sync( uid => $uid, - push_sync => $self->param('sync_source') eq 'travelynx' ? 1 : 0, + push_sync => $self->param('sync_source') eq 'travelynx' ? 1 : 0, pull_sync => $self->param('sync_source') eq 'traewelling' ? 1 : 0, - toot => $self->param('toot') ? 1 : 0, - tweet => $self->param('tweet') ? 1 : 0, + toot => $self->param('toot') ? 1 : 0, + tweet => $self->param('tweet') ? 1 : 0, ); $self->flash( success => 'traewelling' ); $self->redirect_to('account'); diff --git a/lib/Travelynx/Helper/Traewelling.pm b/lib/Travelynx/Helper/Traewelling.pm index 03db4d2..401d9a6 100644 --- a/lib/Travelynx/Helper/Traewelling.pm +++ b/lib/Travelynx/Helper/Traewelling.pm @@ -362,7 +362,7 @@ sub checkin { $self->{model}->log( uid => $opt{uid}, message => - "Fehler bei $opt{train_type} $opt{train_no}: $err_msg", +"Checkin-Fehler bei $opt{train_type} $opt{train_no}: $err_msg", is_error => 1 ); return; @@ -390,8 +390,9 @@ sub checkin { my ($err) = @_; $self->{log}->debug("... error: $err"); $self->{model}->log( - uid => $opt{uid}, - message => "Fehler bei $opt{train_type} $opt{train_no}: $err", + uid => $opt{uid}, + message => + "Checkin-Fehler bei $opt{train_type} $opt{train_no}: $err", is_error => 1 ); } diff --git a/templates/_checked_in.html.ep b/templates/_checked_in.html.ep index 76d11bc..d882501 100644 --- a/templates/_checked_in.html.ep +++ b/templates/_checked_in.html.ep @@ -278,6 +278,20 @@

% } + % if ($journey->{traewelling}{errored} and $journey->{traewelling_log_latest}) { +

+

+

+ % } + % if ($journey->{traewelling_url}) { +

+

+

+ % }
% my $url = 'https://marudor.de/details/' . $journey->{train_type} . ' ' . $journey->{train_no} . '/' . DateTime->now(time_zone => 'Europe/Berlin')->epoch . '000'; diff --git a/templates/_public_status_card.html.ep b/templates/_public_status_card.html.ep index 907427f..0f9019b 100644 --- a/templates/_public_status_card.html.ep +++ b/templates/_public_status_card.html.ep @@ -148,8 +148,12 @@ % }
- % my $url = 'https://marudor.de/details/' . $journey->{train_type} . ' ' . $journey->{train_no} . '/' . DateTime->now(time_zone => 'Europe/Berlin')->epoch . '000'; - timeline Zuglauf + % if ($journey->{traewelling_url}) { + timeline Träwelling + % } else { + % my $url = 'https://marudor.de/details/' . $journey->{train_type} . ' ' . $journey->{train_no} . '/' . DateTime->now(time_zone => 'Europe/Berlin')->epoch . '000'; + timeline Zuglauf + % } % if ($journey->{extra_data}{trip_id}) { map Karte % } diff --git a/templates/traewelling.html.ep b/templates/traewelling.html.ep index a5e2ae5..b68d8c1 100644 --- a/templates/traewelling.html.ep +++ b/templates/traewelling.html.ep @@ -9,8 +9,7 @@
Beta-Feature -

Die Verbindung von Checkinservices bietet viele Möglichkeiten für interessante Fehlerbilder. - Falls etwas nicht klappt, bitte mit möglichst detaillierten Angaben zum Hergang einen Bug melden. +

Bekannte Einschränkung: Hooks werden bei einem Checkin via Träwelling nicht ausgelöst.

@@ -101,7 +100,8 @@ Nahverkehrsmittel und Züge außerhalb des deutschen Schienennetzes werden nicht unterstützt und ignoriert. Checkins, die vor dem Verknüpfen der Accounts stattgefunden haben, werden nicht - synchronisiert. + synchronisiert. Bei synchronisierten Checkins wird der zugehörige + Träwelling-Status von deiner travelynx-Statusseite aus verlinkt.

Mit E-Mail und Passwort wird ein Login über die Träwelling-API -- cgit v1.2.3