From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, URIBL_RED shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id C85931F9FC; Wed, 17 Mar 2021 18:14:08 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Cc: Konstantin Ryabitsev Subject: [PATCH] searchview: collapse Message-ID links in summary Date: Wed, 17 Mar 2021 20:14:08 +0200 Message-Id: <20210317181408.9124-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: 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 Link: https://public-inbox.org/meta/20210317132723.xx4klonordhsb6ve@chatter.i7.local/ --- lib/PublicInbox/SearchView.pm | 10 ++++++---- 1 file 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. }. $s . "\n";