From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-3.4 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, RP_MATCHES_RCVD shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: meta@public-inbox.org Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 1C80520300 for ; Wed, 13 Apr 2016 01:36:27 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] searchview: deal with the removal of rsort Date: Wed, 13 Apr 2016 01:36:27 +0000 Message-Id: <20160413013627.15322-1-e@80x24.org> List-Id: 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(-) diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm index ab0ff19..e94a1df 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 f58099d..ebe82b4 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 } -- EW