sub generate_thread_atom {
my ($ctx) = @_;
my $mid = $ctx->{mid};
- my $res = $ctx->{srch}->get_thread($mid);
- return _no_thread() unless $res->{total};
+ my $msgs = $ctx->{srch}->get_thread($mid);
+ return _no_thread() unless @$msgs;
my $ibx = $ctx->{-inbox};
my $html_url = $ibx->base_url($ctx->{env});
$html_url .= PublicInbox::Hval->new_msgid($mid)->{href};
$ctx->{-html_url} = $html_url;
- my $msgs = $res->{msgs};
PublicInbox::WwwAtomStream->response($ctx, 200, sub {
while (my $smsg = shift @$msgs) {
$ibx->smsg_mime($smsg) and return $smsg;
my $more = scalar @$msgs;
return PublicInbox::View::index_entry($m, $ctx, $more);
}
- new_html_footer($ctx);
+ PublicInbox::View::pagination_footer($ctx, './new.html');
});
}
[404, ['Content-Type', 'text/plain'], ["No feed found for thread\n"]];
}
-sub new_html_footer {
- my ($ctx) = @_;
- my $qp = delete $ctx->{qp} or return;
- my $latest = '';
- my $next = delete $ctx->{next_page} || '';
- if ($next) {
- $next = qq!<a\nhref="?$next"\nrel=next>next</a>!;
- }
- if (!$qp) {
- $latest = qq! <a\nhref='./new.html'>latest</a>!;
- $next ||= ' ';
- }
- "<hr><pre>page: $next$latest</pre>";
-}
-
sub recent_msgs {
my ($ctx) = @_;
my $ibx = $ctx->{-inbox};
die "BUG: unsupported inbox version: $v\n";
}
if (my $srch = $ibx->search) {
- my $o = $qp ? $qp->{o} : 0;
- $o += 0;
- $o = 0 if $o < 0;
- my $res = $ibx->recent({ limit => $max, offset => $o });
- my $next = $o + $max;
- $ctx->{next_page} = "o=$next" if $res->{total} >= $next;
- return $res->{msgs};
+ return PublicInbox::View::paginate_recent($ctx, $max);
}
my $hex = '[a-f0-9]';