about summary refs log tree commit homepage
path: root/lib/PublicInbox/SearchView.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-03-17 20:14:08 +0200
committerEric Wong <e@80x24.org>2021-03-21 10:30:55 +0000
commit076543017b7646a7324156ed5d5245d467d53c1c (patch)
treeea3e2b30fa4edc3bb9a63076b5bf2283411c6776 /lib/PublicInbox/SearchView.pm
parenta82e09c5e2ded9bc771cfae0fc5e267b063020ba (diff)
downloadpublic-inbox-076543017b7646a7324156ed5d5245d467d53c1c.tar.gz
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/
Diffstat (limited to 'lib/PublicInbox/SearchView.pm')
-rw-r--r--lib/PublicInbox/SearchView.pm10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm
index 2d0b8e13..e13359d5 100644
--- a/lib/PublicInbox/SearchView.pm
+++ b/lib/PublicInbox/SearchView.pm
@@ -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";