diff options
Diffstat (limited to 'lib/PublicInbox/View.pm')
-rw-r--r-- | lib/PublicInbox/View.pm | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 006da8d0..dfae44f8 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -741,19 +741,27 @@ sub sort_ts { } @_; } +sub _tryload_ghost ($$) { + my ($srch, $node) = @_; + my $mid = $node->messageid; + my $smsg = $srch->lookup_mail($mid) or return; + $smsg->mini_mime; +} + # accumulate recent topics if search is supported # returns 1 if done, undef if not sub add_topic { my ($state, $node, $level) = @_; return unless $node; my $child_adjust = 1; - - if (my $x = $node->message) { + my $srch = $state->{srch}; + my $x = $node->message || _tryload_ghost($srch, $node); + if ($x) { $x = $x->header_obj; my $subj; $subj = $x->header('Subject'); - $subj = $state->{srch}->subject_normalized($subj); + $subj = $srch->subject_normalized($subj); if (++$state->{subjs}->{$subj} == 1) { push @{$state->{order}}, [ $level, $subj ]; |