]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei: add ->lms shortcut for LeiMailSync
authorEric Wong <e@80x24.org>
Tue, 17 Aug 2021 08:52:39 +0000 (08:52 +0000)
committerEric Wong <e@80x24.org>
Wed, 18 Aug 2021 11:41:31 +0000 (11:41 +0000)
We access this read-only in many places (and will in more),
so provide a shortcut to simplify callers.

lib/PublicInbox/LEI.pm
lib/PublicInbox/LeiBlob.pm
lib/PublicInbox/LeiForgetMailSync.pm
lib/PublicInbox/LeiInspect.pm
lib/PublicInbox/LeiLcat.pm
lib/PublicInbox/LeiLsMailSource.pm

index 347dd2806365340ef699d3489a4615cec166c023..e5232f1bd8509b5fcf1375cabce3be0d3576add3 100644 (file)
@@ -1425,4 +1425,13 @@ sub git_blob_id {
        ($lei->{sto} // _lei_store($lei, 1))->git_blob_id($eml);
 }
 
+sub lms { # read-only LeiMailSync
+       my ($lei) = @_;
+       my $lse = $lei->{lse} // do {
+               my $sto = $lei->{sto} // _lei_store($lei);
+               $sto ? $sto->search : undef
+       };
+       $lse ? $lse->lms : undef;
+}
+
 1;
index 3158ca3beffda3ce8d4a2c0d473324f26e750f5d..21003894026099d55637684cf880ed291222cd11 100644 (file)
@@ -133,8 +133,7 @@ sub lei_blob {
                }
                my $ce = $?;
                return if $ce == 0;
-               my $sto = $lei->_lei_store;
-               my $lms = $sto ? $sto->search->lms : undef;
+               my $lms = $lei->lms;
                if (my $bref = $lms ? $lms->local_blob($blob, 1) : undef) {
                        defined($lei->{-attach_idx}) and
                                return extract_attach($lei, $blob, $bref);
index 46dde1a7fd591bb78fdca32e97eaa205141820b2..c74ba25ddde7240afd08389015020442b366f3fb 100644 (file)
@@ -14,8 +14,7 @@ use PublicInbox::LeiExportKw;
 
 sub lei_forget_mail_sync {
        my ($lei, @folders) = @_;
-       my $sto = $lei->_lei_store or return;
-       my $lms = $sto->search->lms or return;
+       my $lms = $lei->lms or return;
        my $err = $lms->arg2folder($lei, \@folders);
        $lei->qerr(@{$err->{qerr}}) if $err->{qerr};
        return $lei->fail($err->{fail}) if $err->{fail};
index bf7a48368d318a2a493e9357ffeaaacd78e4a840..2d2ff1a0e7f6754a014f8d1d461c06b503253ef1 100644 (file)
@@ -41,8 +41,7 @@ sub inspect_imap_uid ($$) {
 sub inspect_sync_folder ($$) {
        my ($lei, $folder) = @_;
        my $ent = {};
-       my $lse = $lei->{lse} or return $ent;
-       my $lms = $lse->lms or return $ent;
+       my $lms = $lei->lms or return $ent;
        my $folders = [ $folder ];
        my $err = $lms->arg2folder($lei, $folders);
        if ($err) {
index 4a0c24a96bdb9f480163222ab28b4ef08e11f27c..9d95e899c2d4888c1b0166eec298d96a19a673b2 100644 (file)
@@ -13,7 +13,7 @@ use PublicInbox::MID qw($MID_EXTRACT);
 
 sub lcat_folder ($$$) {
        my ($lei, $lms, $folder) = @_;
-       $lms //= $lei->{lse}->lms // return;
+       $lms //= $lei->lms or return;
        my $folders = [ $folder];
        my $err = $lms->arg2folder($lei, $folders);
        $lei->qerr(@{$err->{qerr}}) if $err && $err->{qerr};
@@ -29,7 +29,7 @@ sub lcat_folder ($$$) {
 
 sub lcat_imap_uri ($$) {
        my ($lei, $uri) = @_;
-       my $lms = $lei->{lse}->lms or return;
+       my $lms = $lei->lms or return;
        # cf. LeiXsearch->lcat_dump
        if (defined $uri->uid) {
                my $oidhex = $lms->imap_oid($lei, $uri);
@@ -129,8 +129,7 @@ sub lei_lcat {
        my ($lei, @argv) = @_;
        my $lxs = $lei->lxs_prepare or return;
        $lei->ale->refresh_externals($lxs, $lei);
-       my $sto = $lei->_lei_store(1);
-       $lei->{lse} = $sto->search;
+       $lei->_lei_store(1);
        my $opt = $lei->{opt};
        my %mset_opt = map { $_ => $opt->{$_} } qw(threads limit offset);
        $mset_opt{asc} = $opt->{'reverse'} ? 1 : 0;
@@ -153,8 +152,7 @@ no args allowed on command-line with --stdin
 
 sub _complete_lcat {
        my ($lei, @argv) = @_;
-       my $sto = $lei->_lei_store or return;
-       my $lms = $sto->search->lms or return;
+       my $lms = $lei->lms or return;
        my $match_cb = $lei->complete_url_prepare(\@argv);
        map { $match_cb->($_) } $lms->folders;
 }
index cadc61eda162ca1d5f5502204a6f93d2b520b218..2d8913ac9f090adf1af6ccd6148860be0fed32e3 100644 (file)
@@ -103,8 +103,7 @@ sub _complete_ls_mail_source {
        my $match_cb = $lei->complete_url_prepare(\@argv);
        my @m = map { $match_cb->($_) } $lei->url_folder_cache->keys;
        my %f = map { $_ => 1 } @m;
-       my $sto = $lei->_lei_store;
-       if (my $lms = $sto ? $sto->search->lms : undef) {
+       if (my $lms = $lei->lms) {
                @m = map { $match_cb->($_) } grep(
                        m!\A(?:imaps?|nntps?|s?news)://!, $lms->folders);
                @f{@m} = @m;