- my $offset = $opts->{offset} || 0;
- my $limit = $opts->{limit} || 50;
- my $mset = $enquire->get_mset($offset, $limit);
- return $mset if $opts->{mset};
- my @msgs = map { PublicInbox::Smsg::from_mitem($_) } $mset->items;
- return \@msgs unless wantarray;
-
- ($mset->get_matches_estimated, \@msgs)
+
+ # `mairix -t / --threads' or JMAP collapseThreads
+ if ($opts->{thread} && has_threadid($self)) {
+ $enquire->set_collapse_key(THREADID);
+ }
+ $enquire->get_mset($opts->{offset} || 0, $opts->{limit} || 50);
+}
+
+sub mset_to_smsg {
+ my ($self, $ibx, $mset) = @_;
+ my $nshard = $self->{nshard} // 1;
+ my $i = 0;
+ my %order = map { mdocid($nshard, $_) => ++$i } $mset->items;
+ my @msgs = sort {
+ $order{$a->{num}} <=> $order{$b->{num}}
+ } @{$ibx->over->get_all(keys %order)};
+ wantarray ? ($mset->get_matches_estimated, \@msgs) : \@msgs;