package PublicInbox::Feed;
use strict;
use warnings;
-use PublicInbox::MIME;
use PublicInbox::View;
use PublicInbox::WwwAtomStream;
use PublicInbox::Smsg; # this loads w/o Search::Xapian
sub generate_i {
my ($ctx) = @_;
- while (my $smsg = shift @{$ctx->{msgs}}) {
- $ctx->{-inbox}->smsg_mime($smsg) and return $smsg;
- }
+ shift @{$ctx->{msgs}};
}
# main function
}
sub new_html_i {
- my ($nr, $ctx) = @_;
- my $msgs = $ctx->{msgs};
- while (my $smsg = shift @$msgs) {
- my $m = $ctx->{-inbox}->smsg_mime($smsg) or next;
- my $more = scalar @$msgs;
- return PublicInbox::View::index_entry($m, $ctx, $more);
- }
- PublicInbox::View::pagination_footer($ctx, './new.html');
+ my ($ctx, $eml) = @_;
+ $ctx->zmore($ctx->html_top) if exists $ctx->{-html_tip};
+
+ $eml and return PublicInbox::View::eml_entry($ctx, $eml);
+ my $smsg = shift @{$ctx->{msgs}} or
+ $ctx->zmore(PublicInbox::View::pagination_footer(
+ $ctx, './new.html'));
+ $smsg;
}
sub new_html {
$ctx->{-html_tip} = '<pre>';
$ctx->{-upfx} = '';
$ctx->{-hr} = 1;
- PublicInbox::WwwStream->response($ctx, 200, \&new_html_i);
+ PublicInbox::WwwStream::aresponse($ctx, 200, \&new_html_i);
}
# private subs
my ($ctx) = @_;
my $ibx = $ctx->{-inbox};
my $max = $ibx->{feedmax};
- my $qp = $ctx->{qp};
- my $v = $ibx->version;
- if ($v > 2) {
- die "BUG: unsupported inbox version: $v\n";
- }
- if ($ibx->over) {
- return PublicInbox::View::paginate_recent($ctx, $max);
- }
+ return PublicInbox::View::paginate_recent($ctx, $max) if $ibx->over;
+ # only for rare v1 inboxes which aren't indexed at all
+ my $qp = $ctx->{qp};
my $hex = '[a-f0-9]';
my $addmsg = qr!^:000000 100644 \S+ (\S+) A\t${hex}{2}/${hex}{38}$!;
my $delmsg = qr!^:100644 000000 (\S+) \S+ D\t(${hex}{2}/${hex}{38})$!;