diff options
author | Eric Wong <e@80x24.org> | 2016-06-20 07:22:23 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-06-20 07:22:52 +0000 |
commit | 89c33eadfd78b2aacd3e4924cc62a7e3402c35e8 (patch) | |
tree | c1609e5f543a8ba7db5217615a8870bd9193f620 /lib/PublicInbox/View.pm | |
parent | c70cc0c804f94127b7eb4448d796f4c1b3f6dd6f (diff) | |
download | public-inbox-89c33eadfd78b2aacd3e4924cc62a7e3402c35e8.tar.gz |
This should help avoid having too many fake top-level messages in the topic view since we only have a partial window for threading results.
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 ]; |