- $ctx->{seen} = {};
-
- PublicInbox::View::walk_thread($th, $ctx,
- *PublicInbox::View::pre_thread);
-
- my $msgs = \@m;
- my $mime;
- sub {
- return unless $msgs;
- while ($mime = shift @$msgs) {
- my $mid = mid_clean(mid_mime($mime));
- $mime = $inbox->msg_by_mid($mid) and last;
- }
- if ($mime) {
- $mime = Email::MIME->new($mime);
- return PublicInbox::View::index_entry($mime, $ctx);
- }
- $msgs = undef;
- $skel .= "\n</pre>";
- };
+ $ctx->{s_nr} = scalar(@$msgs).'+ results';
+
+ # reduce hash lookups in skel_dump
+ $ctx->{-obfs_ibx} = $ibx->{obfuscate} ? $ibx : undef;
+ PublicInbox::View::walk_thread($rootset, $ctx,
+ \&PublicInbox::View::pre_thread);
+
+ # link $INBOX_DIR/description text to "recent" view around
+ # the newest message in this result set:
+ $ctx->{-t_max} = max(map { delete $_->{ts} } @$msgs);
+
+ @$msgs = reverse @$msgs if $r;
+ $ctx->{msgs} = $msgs;
+ PublicInbox::WwwStream::aresponse($ctx, 200, \&mset_thread_i);
+}
+
+# callback for PublicInbox::WwwStream::getline
+sub mset_thread_i {
+ my ($ctx, $eml) = @_;
+ $ctx->zmore($ctx->html_top) if exists $ctx->{-html_tip};
+ $eml and return PublicInbox::View::eml_entry($ctx, $eml);
+ my $smsg = shift @{$ctx->{msgs}} or
+ $ctx->zmore(${delete($ctx->{skel})});
+ $smsg;