diff options
Diffstat (limited to 'lib/MaildirIndexer/Index/ByAddresses.rakumod')
-rw-r--r-- | lib/MaildirIndexer/Index/ByAddresses.rakumod | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/MaildirIndexer/Index/ByAddresses.rakumod b/lib/MaildirIndexer/Index/ByAddresses.rakumod index b83a239..ab0d5bb 100644 --- a/lib/MaildirIndexer/Index/ByAddresses.rakumod +++ b/lib/MaildirIndexer/Index/ByAddresses.rakumod @@ -31,6 +31,10 @@ submethod account-for(Str @addresses,Str $mailbox,Int $step) { method add-mail(MaildirIndexer::Email:D $email, Str:D $mailbox --> Nil) { MaildirIndexer::LogTimelineSchema::Index::Add.log: :class('ByAddresses'),:$mailbox, -> { + # ignore adding the same file twice, files in maildirs are + # immutable + return if %!addresses-for-file{ $email.path }:exists; + my Str @addresses = $email.addresses or return; %!addresses-for-file{ $email.path } = @addresses; @@ -42,7 +46,7 @@ method add-mail(MaildirIndexer::Email:D $email, Str:D $mailbox --> Nil) { method del-path(IO:D $file, Str:D $mailbox --> Nil) { MaildirIndexer::LogTimelineSchema::Index::Rm.log: :class('ByAddresses'),:$mailbox, -> { - my Str @addresses = %!addresses-for-file{$file.path} or return; + my Str @addresses = %!addresses-for-file{$file.path}:delete or return; self.account-for(@addresses,$mailbox,-1); |