lib/PublicInbox/Feed.pm | 27 +++++++++++++++++++++++++++ lib/PublicInbox/WWW.pm | 10 +++++++++- diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm index ddc1e3c14f8b3fc4860f73363ac10cf8c6f84efe..c16c417a099e9e6b88bdc94e5f9897e37293380a 100644 --- a/lib/PublicInbox/Feed.pm +++ b/lib/PublicInbox/Feed.pm @@ -34,6 +34,33 @@ my ($ctx) = @_; sub { emit_html_index($_[0], $ctx) }; } +sub new_html { + my ($ctx) = @_; + my @paths; + my (undef, $last) = each_recent_blob($ctx, sub { + my ($path, $commit, $ts, $u, $subj) = @_; + $ctx->{first} ||= $commit; + push @paths, $path; + }); + if (!@paths) { + return [404, ['Content-Type', 'text/plain'], + ["No messages, yet\n"] ]; + } + $ctx->{-html_tip} = '
';
+ $ctx->{-upfx} = '';
+ my $res = PublicInbox::WwwStream->new($ctx, sub {
+ while (my $path = shift @paths) {
+ my $m = do_cat_mail($ctx->{-inbox}, $path) or next;
+ my $more = scalar @paths;
+ my $s = PublicInbox::View::index_entry($m, $ctx, $more);
+ $s .= '' unless $more;
+ return $s;
+ }
+ undef;
+ });
+ [ 200, ['Content-Type', 'text/html; charset=UTF-8'], $res ]
+}
+
# private subs
sub title_tag {
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 196486f25e9b0358849d74c4f8df627897d5294a..da5c1d304f89143a2fedc79e1649c4d521f4ad13 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -75,7 +75,8 @@ } elsif ($path_info =~ m!$INBOX_RE(?:/|/index\.html)?\z!o) {
invalid_inbox($self, $ctx, $1) || get_index($ctx);
} elsif ($path_info =~ m!$INBOX_RE/(?:atom\.xml|new\.atom)\z!o) {
invalid_inbox($self, $ctx, $1) || get_atom($ctx);
-
+ } elsif ($path_info =~ m!$INBOX_RE/new\.html\z!o) {
+ invalid_inbox($self, $ctx, $1) || get_new($ctx);
} elsif ($path_info =~ m!$INBOX_RE/
($PublicInbox::GitHTTPBackend::ANY)\z!ox) {
my $path = $2;
@@ -187,6 +188,13 @@ sub get_atom {
my ($ctx) = @_;
require PublicInbox::Feed;
PublicInbox::Feed::generate($ctx);
+}
+
+# /$INBOX/new.html -> HTML only
+sub get_new {
+ my ($ctx) = @_;
+ require PublicInbox::Feed;
+ PublicInbox::Feed::new_html($ctx);
}
# /$INBOX/?r=$GIT_COMMIT -> HTML only