($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;
}
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);
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};
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) {
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};
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);
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;
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;
}
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;