From 81f446537366d39d41035d47ecf7a7cc2b9c3b75 Mon Sep 17 00:00:00 2001 From: William Morgan Date: Tue, 14 Oct 2008 13:10:48 -0700 Subject: [PATCH] fix up IMAP deletion --- lib/sup/imap.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/sup/imap.rb b/lib/sup/imap.rb index bb5780d..6fb356c 100644 --- a/lib/sup/imap.rb +++ b/lib/sup/imap.rb @@ -118,12 +118,15 @@ class IMAP < Source ids = [ids].flatten # accept single arguments unsynchronized_scan_mailbox imap_ids = ids.map { |i| @imap_state[i] && @imap_state[i][:id] }.compact + return if imap_ids.empty? @imap.store imap_ids, "+FLAGS", [:Deleted] end synchronized :mark_as_deleted def expunge @imap.expunge + unsynchronized_scan_mailbox true + true end synchronized :expunge @@ -133,14 +136,15 @@ class IMAP < Source end synchronized :connect - def scan_mailbox - return if @last_scan && (Time.now - @last_scan) < SCAN_INTERVAL + def scan_mailbox force=false + return if !force && @last_scan && (Time.now - @last_scan) < SCAN_INTERVAL last_id = safely do @imap.examine mailbox @imap.responses["EXISTS"].last end @last_scan = Time.now + @ids = [] if force return if last_id == @ids.length range = (@ids.length + 1) .. last_id -- 2.45.2