The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Jifty::Plugin::SinglePage::Dispatcher;
use strict;
use warnings;
use Jifty::Dispatcher -base;

=head1 NAME

Jifty::Plugin::SinglePage::Dispatcher - Dispatcher for SinglePage plugin

=head1 DESCRIPTION

Dispatcher for L<Jifty::Plugin::SinglePage>

=cut

before '__jifty/webservices/*' => run {
    my (@actions) = grep { $_->class eq 'Jifty::Action::Redirect' } values %{ Jifty->web->request->{'actions'} };
    $_->active(0) for @actions;

    # XXX: shouldn't have multiple redirect
    # Simply ignore Redirect from webservice if we are not in SPA
    Jifty->web->request->argument( '_webservice_redirect' => [map { $_->arguments->{url} } @actions] )
        if Jifty->find_plugin('Jifty::Plugin::SinglePage');

};

on qr{(__jifty/webservices/.*)} => run {
    my $actions = get '_webservice_redirect';
    for my $act (@$actions) {
        if ($act =~ m{^https?://}) {
            Jifty->web->request->argument( '_webservice_external_redirect' => $act );
        }
        else {
            Jifty->web->webservices_redirect($act);
        }
    }
    show $1;
};

1;