diff options
Diffstat (limited to 'worker/jmap/state.go')
-rw-r--r-- | worker/jmap/state.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/worker/jmap/state.go b/worker/jmap/state.go new file mode 100644 index 00000000..3dbab3fb --- /dev/null +++ b/worker/jmap/state.go @@ -0,0 +1,29 @@ +package jmap + +import ( + "git.sr.ht/~rockorager/go-jmap" + "git.sr.ht/~rockorager/go-jmap/mail/mailbox" +) + +func (w *JMAPWorker) getMailboxState() (string, error) { + var req jmap.Request + + req.Invoke(&mailbox.Get{Account: w.accountId, IDs: make([]jmap.ID, 0)}) + resp, err := w.Do(&req) + if err != nil { + return "", err + } + + for _, inv := range resp.Responses { + switch r := inv.Args.(type) { + case *mailbox.GetResponse: + return r.State, nil + case *jmap.MethodError: + return "", wrapMethodError(r) + + } + } + + // This should be an impossibility + return "", nil +} |