From 18a511c17dd9c4b5fad3a1e837bb8d23216bf758 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 13 Apr 2016 01:35:56 +0000 Subject: searchview: deal with the removal of rsort Oops. While we're at it, simplify the calls to do threading slightly by reducing the places where we touch Mail::Thread globals. Fixes: 56164afc2034 (view: allow topics to be "bumped" by new replies) --- lib/PublicInbox/SearchView.pm | 19 +++++++++---------- lib/PublicInbox/View.pm | 4 ++-- 2 files changed, 11 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm index ab0ff19a..e94a1dff 100644 --- a/lib/PublicInbox/SearchView.pm +++ b/lib/PublicInbox/SearchView.pm @@ -150,13 +150,8 @@ sub tdump { $m; } ($mset->items); - require PublicInbox::Thread; - my $th = PublicInbox::Thread->new(@m); - { - no warnings 'once'; - $Mail::Thread::nosubject = 0; - } - $th->thread; + my @rootset; + my $th = PublicInbox::View::thread_results(\@m, 0, $q->{r}); if ($q->{r}) { $th->order(sub { sort { (eval { $pct{$b->topmost->messageid} } || 0) @@ -164,9 +159,13 @@ sub tdump { (eval { $pct{$a->topmost->messageid} } || 0) } @_; }); + @rootset = $th->rootset; } else { - no warnings 'once'; - $th->order(*PublicInbox::View::rsort_ts); + @rootset = sort { + (eval { $b->topmost->message->header('X-PI-TS') } || 0) + <=> + (eval { $a->topmost->message->header('X-PI-TS') } || 0) + } $th->rootset; } my $git = $ctx->{git} ||= PublicInbox::Git->new($ctx->{git_dir}); @@ -178,7 +177,7 @@ sub tdump { fh => $fh, }; $ctx->{searchview} = 1; - tdump_ent($git, $state, $_, 0) for $th->rootset; + tdump_ent($git, $state, $_, 0) for @rootset; PublicInbox::View::thread_adj_level($state, 0); Email::Address->purge_cache; diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index f58099d4..ebe82b49 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -726,7 +726,7 @@ sub msg_timestamp { } sub thread_results { - my ($msgs, $nosubject) = @_; + my ($msgs, $nosubject, $nosort) = @_; require PublicInbox::Thread; my $th = PublicInbox::Thread->new(@$msgs); @@ -740,7 +740,7 @@ sub thread_results { # Keep ghosts with only a single direct child: $Mail::Thread::noprune = 1; $th->thread; - $th->order(*sort_ts); + $th->order(*sort_ts) unless $nosort; $th } -- cgit v1.2.3-24-ge0c7