]> Sergey Matveev's repositories - public-inbox.git/commitdiff
searchview: collapse Message-ID links in summary
authorEric Wong <e@80x24.org>
Wed, 17 Mar 2021 18:14:08 +0000 (20:14 +0200)
committerEric Wong <e@80x24.org>
Sun, 21 Mar 2021 10:30:55 +0000 (10:30 +0000)
There's no point in showing duplicate links to the same
Message-ID in summary view.  The per-message page will
note the duplication (if any) separately.

Reported-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Link: https://public-inbox.org/meta/20210317132723.xx4klonordhsb6ve@chatter.i7.local/
lib/PublicInbox/SearchView.pm

index 2d0b8e13f24c8b4aecc7f6ad73652323b4465c7c..e13359d5fcc3917e45d67e62cc0a775ed3d53a80 100644 (file)
@@ -98,11 +98,9 @@ sub mset_summary {
        my $obfs_ibx = $ibx->{obfuscate} ? $ibx : undef;
        my @nums = @{$ibx->isrch->mset_to_artnums($mset)};
        my %num2msg = map { $_->{num} => $_ } @{$ibx->over->get_all(@nums)};
-       my ($min, $max);
+       my ($min, $max, %seen);
 
        foreach my $m ($mset->items) {
-               my $rank = sprintf("%${pad}d", $m->get_rank + 1);
-               my $pct = get_pct($m);
                my $num = shift @nums;
                my $smsg = delete($num2msg{$num}) or do {
                        eval {
@@ -111,7 +109,12 @@ sub mset_summary {
                        };
                        next;
                };
+               my $mid = $smsg->{mid};
+               next if $seen{$mid}++;
+               $mid = mid_href($mid);
                $ctx->{-t_max} //= $smsg->{ts};
+               my $rank = sprintf("%${pad}d", $m->get_rank + 1);
+               my $pct = get_pct($m);
 
                # only when sorting by relevance, ->items is always
                # ordered descending:
@@ -125,7 +128,6 @@ sub mset_summary {
                        obfuscate_addrs($obfs_ibx, $f);
                }
                my $date = fmt_ts($smsg->{ds});
-               my $mid = mid_href($smsg->{mid});
                $s = '(no subject)' if $s eq '';
                $$res .= qq{$rank. <b><a\nhref="$mid/">}.
                        $s . "</a></b>\n";