]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei q: one -t shouldn't set `flagged' on external mail
authorEric Wong <e@80x24.org>
Fri, 5 Mar 2021 04:03:05 +0000 (04:03 +0000)
committerEric Wong <e@80x24.org>
Fri, 5 Mar 2021 07:20:29 +0000 (07:20 +0000)
We only want to set `flagged' if a user requests it via
a two '-t' switches.

Fixes: 232f8e376fe2856c ("lei q: -tt marks direct hits as flagged")
lib/PublicInbox/LeiXSearch.pm
t/lei-q-thread.t

index 3270b420b64c18a94b74b67574c8e5089b91de0f..f2c8c02e8c653c7d670128093a31d0d4c7049c93 100644 (file)
@@ -148,7 +148,7 @@ sub query_thread_mset { # for --threads
        my $mset;
        my $each_smsg = $lei->{ovv}->ovv_each_smsg_cb($lei, $ibxish);
        my $can_kw = !!$ibxish->can('msg_keywords');
-       my $fl = $lei->{opt}->{threads} > 1;
+       my $fl = $lei->{opt}->{threads} > 1 ? [ 'flagged' ] : undef;
        do {
                $mset = $srch->mset($mo->{qstr}, $mo);
                mset_progress($lei, $desc, $mset->size,
@@ -165,8 +165,8 @@ sub query_thread_mset { # for --threads
                                if ($mitem) {
                                        if ($can_kw) {
                                                mitem_kw($smsg, $mitem, $fl);
-                                       } else {
-                                               $smsg->{kw} = [ 'flagged' ];
+                                       } elsif ($fl) {
+                                               $smsg->{kw} = $fl;
                                        }
                                }
                                $each_smsg->($smsg, $mitem);
index 0ddf47a69fe12741a1b1ef320e63a567ea45394e..28c639f5e35c22e0cfba0ac3dbe16b779001ea0a 100644 (file)
@@ -41,8 +41,12 @@ test_lei(sub {
                'flagged set in direct hit');
        'TODO' or is_deeply($m{'<testmessage@example.com>'}->{kw}, ['draft'],
                'flagged set in direct hit');
-       lei_ok qw(q -t -t m:testmessage@example.com --only), "$ro_home/t2";
+       lei_ok qw(q -tt m:testmessage@example.com --only), "$ro_home/t2";
        $res = json_utf8->decode($lei_out);
-       is_deeply($res->[0]->{kw}, [ 'flagged' ], 'flagged set on external');
+       is_deeply($res->[0]->{kw}, [ 'flagged' ],
+               'flagged set on external with -tt');
+       lei_ok qw(q -t m:testmessage@example.com --only), "$ro_home/t2";
+       $res = json_utf8->decode($lei_out);
+       ok(!exists($res->[0]->{kw}), 'flagged not set on external with 1 -t');
 });
 done_testing;