-sub tdump {
- my ($cb, $res, $mset, $q, $ctx) = @_;
- my $fh = $cb->([200, ['Content-Type'=>'text/html; charset=UTF-8']]);
- $fh->write($res .= '</pre>');
- my %pct;
- my @m = map {
- my $i = $_;
- my $m = PublicInbox::SearchMsg->load_doc($i->get_document);
- $pct{$m->mid} = $i->get_percent;
- $m = $m->mini_mime;
- $m;
- } ($mset->items);
-
- my @rootset;
- my $th = PublicInbox::Thread->new(@m);
- $th->thread;
- if ($q->{r}) { # order by relevance
- $th->order(sub {
- sort { (eval { $pct{$b->topmost->messageid} } || 0)
- <=>
- (eval { $pct{$a->topmost->messageid} } || 0)
- } @_;
- });
- } else { # order by time (default for threaded view)
- $th->order(*PublicInbox::View::sort_ts);
- }
- @rootset = $th->rootset;
- my $git = $ctx->{git} ||= PublicInbox::Git->new($ctx->{git_dir});
- my $state = {
- ctx => $ctx,
- anchor_idx => 0,
- pct => \%pct,
- cur_level => 0,
- fh => $fh,
- };
- $ctx->{searchview} = 1;
- tdump_ent($git, $state, $_, 0) for @rootset;
- PublicInbox::View::thread_adj_level($state, 0);
- Email::Address->purge_cache;