diff options
Diffstat (limited to 'worker')
-rw-r--r-- | worker/imap/checkmail.go | 13 | ||||
-rw-r--r-- | worker/types/messages.go | 5 |
2 files changed, 18 insertions, 0 deletions
diff --git a/worker/imap/checkmail.go b/worker/imap/checkmail.go index 21f2e4bb..e0aef71b 100644 --- a/worker/imap/checkmail.go +++ b/worker/imap/checkmail.go @@ -13,7 +13,13 @@ func (w *IMAPWorker) handleCheckMailMessage(msg *types.CheckMail) { imap.StatusRecent, imap.StatusUnseen, } + var remaining []string for _, dir := range msg.Directories { + if len(w.worker.Actions) > 0 { + remaining = append(remaining, dir) + continue + } + logging.Debugf("Getting status of directory %s", dir) status, err := w.client.Status(dir, items) if err != nil { @@ -38,5 +44,12 @@ func (w *IMAPWorker) handleCheckMailMessage(msg *types.CheckMail) { }, nil) } } + if len(remaining) > 0 { + w.worker.PostMessage(&types.CheckMailDirectories{ + Message: types.RespondTo(msg), + Directories: remaining, + }, nil) + return + } w.worker.PostMessage(&types.Done{Message: types.RespondTo(msg)}, nil) } diff --git a/worker/types/messages.go b/worker/types/messages.go index 9194cbe4..00a1a781 100644 --- a/worker/types/messages.go +++ b/worker/types/messages.go @@ -255,3 +255,8 @@ type LabelList struct { Message Labels []string } + +type CheckMailDirectories struct { + Message + Directories []string +} |