Mark sent messages as "seen" in maildir
- Add maildir flags to complement a messages imap flags - Set the "seen" flag on sent messages when using the maildir backend - Cleanup AppendMessage interface to use models.Flag for both IMAP and maildir
This commit is contained in:
parent
68f179021d
commit
6ff3c7a1ba
10 changed files with 65 additions and 21 deletions
worker/imap
|
@ -91,7 +91,7 @@ func (imapw *IMAPWorker) handleFetchMessages(
|
|||
Info: &models.MessageInfo{
|
||||
BodyStructure: translateBodyStructure(_msg.BodyStructure),
|
||||
Envelope: translateEnvelope(_msg.Envelope),
|
||||
Flags: translateFlags(_msg.Flags),
|
||||
Flags: translateImapFlags(_msg.Flags),
|
||||
InternalDate: _msg.InternalDate,
|
||||
RFC822Headers: header,
|
||||
Uid: _msg.Uid,
|
||||
|
@ -115,7 +115,7 @@ func (imapw *IMAPWorker) handleFetchMessages(
|
|||
imapw.worker.PostMessage(&types.MessageInfo{
|
||||
Message: types.RespondTo(msg),
|
||||
Info: &models.MessageInfo{
|
||||
Flags: translateFlags(_msg.Flags),
|
||||
Flags: translateImapFlags(_msg.Flags),
|
||||
Uid: _msg.Uid,
|
||||
},
|
||||
}, nil)
|
||||
|
@ -136,7 +136,7 @@ func (imapw *IMAPWorker) handleFetchMessages(
|
|||
imapw.worker.PostMessage(&types.MessageInfo{
|
||||
Message: types.RespondTo(msg),
|
||||
Info: &models.MessageInfo{
|
||||
Flags: translateFlags(_msg.Flags),
|
||||
Flags: translateImapFlags(_msg.Flags),
|
||||
Uid: _msg.Uid,
|
||||
},
|
||||
}, nil)
|
||||
|
|
|
@ -89,7 +89,7 @@ func translateAddresses(addrs []*imap.Address) []*models.Address {
|
|||
return converted
|
||||
}
|
||||
|
||||
var flagMap = map[string]models.Flag{
|
||||
var imapToFlag = map[string]models.Flag{
|
||||
imap.SeenFlag: models.SeenFlag,
|
||||
imap.RecentFlag: models.RecentFlag,
|
||||
imap.AnsweredFlag: models.AnsweredFlag,
|
||||
|
@ -97,12 +97,30 @@ var flagMap = map[string]models.Flag{
|
|||
imap.FlaggedFlag: models.FlaggedFlag,
|
||||
}
|
||||
|
||||
func translateFlags(imapFlags []string) []models.Flag {
|
||||
var flagToImap = map[models.Flag]string{
|
||||
models.SeenFlag: imap.SeenFlag,
|
||||
models.RecentFlag: imap.RecentFlag,
|
||||
models.AnsweredFlag: imap.AnsweredFlag,
|
||||
models.DeletedFlag: imap.DeletedFlag,
|
||||
models.FlaggedFlag: imap.FlaggedFlag,
|
||||
}
|
||||
|
||||
func translateImapFlags(imapFlags []string) []models.Flag {
|
||||
var flags []models.Flag
|
||||
for _, imapFlag := range imapFlags {
|
||||
if flag, ok := flagMap[imapFlag]; ok {
|
||||
if flag, ok := imapToFlag[imapFlag]; ok {
|
||||
flags = append(flags, flag)
|
||||
}
|
||||
}
|
||||
return flags
|
||||
}
|
||||
|
||||
func translateFlags(flags []models.Flag) []string {
|
||||
var imapFlags []string
|
||||
for _, flag := range flags {
|
||||
if imapFlag, ok := flagToImap[flag]; ok {
|
||||
imapFlags = append(imapFlags, imapFlag)
|
||||
}
|
||||
}
|
||||
return imapFlags
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ func (m appendLiteral) Len() int {
|
|||
}
|
||||
|
||||
func (imapw *IMAPWorker) handleAppendMessage(msg *types.AppendMessage) {
|
||||
if err := imapw.client.Append(msg.Destination, msg.Flags, msg.Date,
|
||||
if err := imapw.client.Append(msg.Destination, translateFlags(msg.Flags), msg.Date,
|
||||
&appendLiteral{
|
||||
Reader: msg.Reader,
|
||||
Length: msg.Length,
|
||||
|
|
|
@ -222,7 +222,7 @@ func (w *IMAPWorker) handleImapUpdate(update client.Update) {
|
|||
Info: &models.MessageInfo{
|
||||
BodyStructure: translateBodyStructure(msg.BodyStructure),
|
||||
Envelope: translateEnvelope(msg.Envelope),
|
||||
Flags: translateFlags(msg.Flags),
|
||||
Flags: translateImapFlags(msg.Flags),
|
||||
InternalDate: msg.InternalDate,
|
||||
Uid: msg.Uid,
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue