use PublicInbox::View;
use PublicInbox::WwwAtomStream;
use PublicInbox::MID qw(mid2path mid_mime mid_clean mid_escape);
-use Email::MIME;
+use PublicInbox::MIME;
require PublicInbox::Git;
require PublicInbox::SearchThread;
our $LIM = 50;
$rv .= '</pre>';
}
+sub sort_relevance {
+ my ($pct) = @_;
+ sub {
+ [ sort { (eval { $pct->{$b->topmost->{id}} } || 0)
+ <=>
+ (eval { $pct->{$a->topmost->{id}} } || 0)
+ } @{$_[0]} ] };
+}
+
sub mset_thread {
my ($ctx, $mset, $q) = @_;
my %pct;
$smsg;
} ($mset->items) ]});
- my $th = PublicInbox::SearchThread->new($msgs);
- $th->thread;
- if ($q->{r}) { # order by relevance
- $th->order(sub {
- [ sort { (eval { $pct{$b->topmost->{id}} } || 0)
- <=>
- (eval { $pct{$a->topmost->{id}} } || 0)
- } @{$_[0]} ];
- });
- } else { # order by time (default for threaded view)
- $th->order(*PublicInbox::View::sort_ts);
- }
+ my $rootset = PublicInbox::SearchThread::thread($msgs,
+ $q->{r} ? sort_relevance(\%pct) : *PublicInbox::View::sort_ts);
my $skel = search_nav_bot($mset, $q). "<pre>";
my $inbox = $ctx->{-inbox};
$ctx->{-upfx} = '';
$ctx->{seen} = {};
$ctx->{s_nr} = scalar(@$msgs).'+ results';
- PublicInbox::View::walk_thread($th, $ctx,
+ PublicInbox::View::walk_thread($rootset, $ctx,
*PublicInbox::View::pre_thread);
my $mime;
$mime = $inbox->msg_by_smsg($mime) and last;
}
if ($mime) {
- $mime = Email::MIME->new($mime);
+ $mime = PublicInbox::MIME->new($mime);
return PublicInbox::View::index_entry($mime, $ctx,
scalar @$msgs);
}
while (my $x = shift @items) {
$x = load_doc_retry($srch, $x);
$x = $ibx->msg_by_smsg($x) and
- return Email::MIME->new($x);
+ return PublicInbox::MIME->new($x);
}
return undef;
});