summaryrefslogtreecommitdiff
path: root/worker/imap
diff options
context:
space:
mode:
Diffstat (limited to 'worker/imap')
-rw-r--r--worker/imap/open.go25
-rw-r--r--worker/imap/search.go3
2 files changed, 19 insertions, 9 deletions
diff --git a/worker/imap/open.go b/worker/imap/open.go
index a0607d0..b52a3c6 100644
--- a/worker/imap/open.go
+++ b/worker/imap/open.go
@@ -3,7 +3,6 @@ package imap
import (
"sort"
- "github.com/emersion/go-imap"
sortthread "github.com/emersion/go-imap-sortthread"
"git.sr.ht/~rjarry/aerc/worker/types"
@@ -29,11 +28,13 @@ func (imapw *IMAPWorker) handleFetchDirectoryContents(
imapw.worker.Logger.Printf("Fetching UID list")
- seqSet := &imap.SeqSet{}
- seqSet.AddRange(1, imapw.selected.Messages)
-
- searchCriteria := &imap.SearchCriteria{
- SeqNum: seqSet,
+ searchCriteria, err := parseSearch(msg.FilterCriteria)
+ if err != nil {
+ imapw.worker.PostMessage(&types.Error{
+ Message: types.RespondTo(msg),
+ Error: err,
+ }, nil)
+ return
}
sortCriteria := translateSortCriterions(msg.SortCriteria)
@@ -98,10 +99,16 @@ func (imapw *IMAPWorker) handleDirectoryThreaded(
msg *types.FetchDirectoryThreaded) {
imapw.worker.Logger.Printf("Fetching threaded UID list")
- seqSet := &imap.SeqSet{}
- seqSet.AddRange(1, imapw.selected.Messages)
+ searchCriteria, err := parseSearch(msg.FilterCriteria)
+ if err != nil {
+ imapw.worker.PostMessage(&types.Error{
+ Message: types.RespondTo(msg),
+ Error: err,
+ }, nil)
+ return
+ }
threads, err := imapw.client.thread.UidThread(sortthread.References,
- &imap.SearchCriteria{SeqNum: seqSet})
+ searchCriteria)
if err != nil {
imapw.worker.PostMessage(&types.Error{
Message: types.RespondTo(msg),
diff --git a/worker/imap/search.go b/worker/imap/search.go
index f866b1c..46a25c7 100644
--- a/worker/imap/search.go
+++ b/worker/imap/search.go
@@ -11,6 +11,9 @@ import (
func parseSearch(args []string) (*imap.SearchCriteria, error) {
criteria := imap.NewSearchCriteria()
+ if len(args) == 0 {
+ return criteria, nil
+ }
opts, optind, err := getopt.Getopts(args, "rubax:X:t:H:f:c:")
if err != nil {