aboutsummaryrefslogtreecommitdiff
path: root/worker/imap/worker.go
diff options
context:
space:
mode:
authorKevin Kuehler <keur@xcf.berkeley.edu>2019-10-10 15:27:08 -0700
committerBen Burwell <ben@benburwell.com>2019-10-12 20:57:49 -0400
commit41f3bb3bc16b5d7bef7ffe29a8f4b493be7d79fd (patch)
tree305a13933b785a659b10756a06e499a2e8a28ba4 /worker/imap/worker.go
parent8cb4a9d751d1497e1059fedb03964bc9e56e5c06 (diff)
worker/imap: Add threading extension
* Import the go-imap-sortthread library * Add sortthread client to imapClient in worker * Add handleDirectoryThreaded, which uses the go-imap-sortthread, and converts the results to the aerc thread type Signed-off-by: Kevin Kuehler <keur@xcf.berkeley.edu>
Diffstat (limited to 'worker/imap/worker.go')
-rw-r--r--worker/imap/worker.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/worker/imap/worker.go b/worker/imap/worker.go
index cd63c39..afc7289 100644
--- a/worker/imap/worker.go
+++ b/worker/imap/worker.go
@@ -8,6 +8,7 @@ import (
"github.com/emersion/go-imap"
idle "github.com/emersion/go-imap-idle"
+ sortthread "github.com/emersion/go-imap-sortthread"
"github.com/emersion/go-imap/client"
"golang.org/x/oauth2"
@@ -26,6 +27,7 @@ var errUnsupported = fmt.Errorf("unsupported command")
type imapClient struct {
*client.Client
+ tc *sortthread.ThreadClient
idle *idle.IdleClient
}
@@ -152,7 +154,7 @@ func (w *IMAPWorker) handleMessage(msg types.WorkerMessage) error {
}
c.Updates = w.updates
- w.client = &imapClient{c, idle.NewClient(c)}
+ w.client = &imapClient{c, sortthread.NewThreadClient(c), idle.NewClient(c)}
w.worker.PostMessage(&types.Done{types.RespondTo(msg)}, nil)
case *types.ListDirectories:
w.handleListDirectories(msg)
@@ -160,6 +162,8 @@ func (w *IMAPWorker) handleMessage(msg types.WorkerMessage) error {
w.handleOpenDirectory(msg)
case *types.FetchDirectoryContents:
w.handleFetchDirectoryContents(msg)
+ case *types.FetchDirectoryThreaded:
+ w.handleDirectoryThreaded(msg)
case *types.CreateDirectory:
w.handleCreateDirectory(msg)
case *types.FetchMessageHeaders: