aboutsummaryrefslogtreecommitdiffstats
path: root/worker/imap
diff options
context:
space:
mode:
Diffstat (limited to 'worker/imap')
-rw-r--r--worker/imap/cache.go2
-rw-r--r--worker/imap/flags.go3
-rw-r--r--worker/imap/imap.go16
3 files changed, 10 insertions, 11 deletions
diff --git a/worker/imap/cache.go b/worker/imap/cache.go
index a889f725..b8673ae7 100644
--- a/worker/imap/cache.go
+++ b/worker/imap/cache.go
@@ -114,7 +114,7 @@ func (w *IMAPWorker) getCachedHeaders(msg *types.FetchMessageHeaders) []uint32 {
mi := &models.MessageInfo{
BodyStructure: &ch.BodyStructure,
Envelope: &ch.Envelope,
- Flags: []models.Flag{models.SeenFlag}, // Always return a SEEN flag
+ Flags: models.SeenFlag, // Always return a SEEN flag
Uid: ch.Uid,
RFC822Headers: hdr,
}
diff --git a/worker/imap/flags.go b/worker/imap/flags.go
index 9d9ecc86..180bc261 100644
--- a/worker/imap/flags.go
+++ b/worker/imap/flags.go
@@ -34,7 +34,6 @@ func (imapw *IMAPWorker) handleAnsweredMessages(msg *types.AnsweredMessages) {
flags := []interface{}{imap.AnsweredFlag}
if !msg.Answered {
item = imap.FormatFlagsOp(imap.RemoveFlags, false)
- flags = []interface{}{imap.AnsweredFlag}
}
imapw.handleStoreOps(msg, msg.Uids, item, flags,
func(_msg *imap.Message) error {
@@ -50,7 +49,7 @@ func (imapw *IMAPWorker) handleAnsweredMessages(msg *types.AnsweredMessages) {
}
func (imapw *IMAPWorker) handleFlagMessages(msg *types.FlagMessages) {
- flags := []interface{}{flagToImap[msg.Flag]}
+ flags := []interface{}{flagToImap[msg.Flags]}
item := imap.FormatFlagsOp(imap.AddFlags, false)
if !msg.Enable {
item = imap.FormatFlagsOp(imap.RemoveFlags, false)
diff --git a/worker/imap/imap.go b/worker/imap/imap.go
index 6e1341b2..82ee2e2e 100644
--- a/worker/imap/imap.go
+++ b/worker/imap/imap.go
@@ -79,7 +79,7 @@ func translateAddresses(addrs []*imap.Address) []*mail.Address {
return converted
}
-var imapToFlag = map[string]models.Flag{
+var imapToFlag = map[string]models.Flags{
imap.SeenFlag: models.SeenFlag,
imap.RecentFlag: models.RecentFlag,
imap.AnsweredFlag: models.AnsweredFlag,
@@ -87,7 +87,7 @@ var imapToFlag = map[string]models.Flag{
imap.FlaggedFlag: models.FlaggedFlag,
}
-var flagToImap = map[models.Flag]string{
+var flagToImap = map[models.Flags]string{
models.SeenFlag: imap.SeenFlag,
models.RecentFlag: imap.RecentFlag,
models.AnsweredFlag: imap.AnsweredFlag,
@@ -95,20 +95,20 @@ var flagToImap = map[models.Flag]string{
models.FlaggedFlag: imap.FlaggedFlag,
}
-func translateImapFlags(imapFlags []string) []models.Flag {
- var flags []models.Flag
+func translateImapFlags(imapFlags []string) models.Flags {
+ var flags models.Flags
for _, imapFlag := range imapFlags {
if flag, ok := imapToFlag[imapFlag]; ok {
- flags = append(flags, flag)
+ flags |= flag
}
}
return flags
}
-func translateFlags(flags []models.Flag) []string {
+func translateFlags(flags models.Flags) []string {
var imapFlags []string
- for _, flag := range flags {
- if imapFlag, ok := flagToImap[flag]; ok {
+ for flag, imapFlag := range flagToImap {
+ if flags.Has(flag) {
imapFlags = append(imapFlags, imapFlag)
}
}