]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/NetReader.pm
lei prune-mail-sync: new command to prune invalid sync data
[public-inbox.git] / lib / PublicInbox / NetReader.pm
index b97444fded2870a28338534fd7aa1fef4fbfafdc..2795a9d4d85e4bbc21c7669a13825db1d6870ba8 100644 (file)
@@ -409,7 +409,7 @@ sub flags2kw ($$$$) {
                        warn "# unknown IMAP flag $f <$uri/;UID=$uid>\n";
                }
        }
-       @$kw = sort @$kw; # for all UI/UX purposes
+       @$kw = sort @$kw; # for LeiSearch->kw_changed and UI/UX purposes
        $kw;
 }
 
@@ -471,6 +471,7 @@ sub each_old_flags ($$$$) {
                while (my ($uid, $per_uid) = each %$r) {
                        my $kw = flags2kw($self, $uri, $uid, $per_uid->{FLAGS})
                                // next;
+                       # LeiImport->input_net_cb
                        $eml_cb->($uri, $uid, $kw, undef, @args);
                }
        }
@@ -746,4 +747,23 @@ sub nntp_each {
 
 sub new { bless {}, shift };
 
+# updates $uri with UIDVALIDITY
+sub mic_for_folder {
+       my ($self, $uri) = @_;
+       my $mic = $self->mic_get($uri) or die "E: not connected: $@";
+       my $m = $self->isa('PublicInbox::NetWriter') ? 'select' : 'examine';
+       $mic->$m($uri->mailbox) or return;
+       my $uidval;
+       for ($mic->Results) {
+               /^\* OK \[UIDVALIDITY ([0-9]+)\].*/ or next;
+               $uidval = $1;
+               last;
+       }
+       $uidval //= $mic->uidvalidity($uri->mailbox) or
+               die "E: failed to get uidvalidity from <$uri>: $@";
+       $uri->uidvalidity($uidval);
+       $mic;
+}
+
+
 1;