From b9534449ecce2c59bb4aebad6051f91c3116b187 Mon Sep 17 00:00:00 2001 From: "Eric Wong (Contractor, The Linux Foundation)" Date: Tue, 3 Apr 2018 11:09:09 +0000 Subject: view: avoid offset during pagination OFFSET in SQLite gets painful to deal with. Instead, rely on timestamps (from Received:) for pagination. This also sets us up for more precise Date searching in case we want it. --- lib/PublicInbox/Feed.pm | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) (limited to 'lib/PublicInbox/Feed.pm') diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm index ff20d7fa..5cb044bd 100644 --- a/lib/PublicInbox/Feed.pm +++ b/lib/PublicInbox/Feed.pm @@ -75,7 +75,7 @@ sub new_html { my $more = scalar @$msgs; return PublicInbox::View::index_entry($m, $ctx, $more); } - new_html_footer($ctx); + PublicInbox::View::pagination_footer($ctx, './new.html'); }); } @@ -85,21 +85,6 @@ sub _no_thread () { [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!next!; - } - if (!$qp) { - $latest = qq! latest!; - $next ||= ' '; - } - "
page: $next$latest
"; -} - sub recent_msgs { my ($ctx) = @_; my $ibx = $ctx->{-inbox}; @@ -110,13 +95,7 @@ sub recent_msgs { 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 $msgs = $ibx->recent({ limit => $max, offset => $o }); - my $next = $o + $max; - $ctx->{next_page} = "o=$next" if scalar(@$msgs) == $max; - return $msgs; + return PublicInbox::View::paginate_recent($ctx); } my $hex = '[a-f0-9]'; -- cgit v1.2.3-24-ge0c7