From 5a8e0e554679223319d03a242e7985602fe66bcb Mon Sep 17 00:00:00 2001 From: Jason Gunthorpe Date: Fri, 31 Jan 2020 15:56:05 -0400 Subject: Support the Trash flag in MailDir This can be set by mutt when 'set maildir_trash=yes' and shows as a deleted item. Keep track of it on the maildir side. Signed-off-by: Jason Gunthorpe --- cloud_mdir_sync/maildir.py | 6 +++++- cloud_mdir_sync/messages.py | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cloud_mdir_sync/maildir.py b/cloud_mdir_sync/maildir.py index fdc8a90..e1f4082 100644 --- a/cloud_mdir_sync/maildir.py +++ b/cloud_mdir_sync/maildir.py @@ -54,6 +54,8 @@ class MailDirMailbox(mailbox.Mailbox): res.add("S") if msg.flags & messages.Message.FLAG_FLAGGED: res.add("F") + if msg.flags & messages.Message.FLAG_DELETED: + res.add("T") return res def _decode_msg_filename(self, fn): @@ -71,6 +73,8 @@ class MailDirMailbox(mailbox.Mailbox): mflags |= messages.Message.FLAG_READ if "F" in flags: mflags |= messages.Message.FLAG_FLAGGED + if "T" in flags: + mflags |= messages.Message.FLAG_DELETED assert ":2," not in fn return (fn, flags, mflags) @@ -153,7 +157,7 @@ class MailDirMailbox(mailbox.Mailbox): cloud_flags = self._msg_to_flags(cloudmsg) base, mflags, _ = self._decode_msg_filename(mymsg.fn) - nflags = (mflags - set(("R", "S", "F"))) | cloud_flags + nflags = (mflags - set(("R", "S", "F", "T"))) | cloud_flags if mflags == nflags: return if nflags: diff --git a/cloud_mdir_sync/messages.py b/cloud_mdir_sync/messages.py index d87e547..b22d341 100644 --- a/cloud_mdir_sync/messages.py +++ b/cloud_mdir_sync/messages.py @@ -29,7 +29,7 @@ MBoxDict_Type = Dict["mailbox.Mailbox", Dict[ContentHash_Type, "Message"]] CHMsgDict_Type = Dict[ContentHash_Type, "Message"] CHMsgMappingDict_Type = Dict[ContentHash_Type, Tuple[Optional["Message"], - "Message"]] + Optional["Message"]]] class Message(object): @@ -40,7 +40,8 @@ class Message(object): FLAG_REPLIED = 1 << 0 FLAG_READ = 1 << 1 FLAG_FLAGGED = 1 << 2 - ALL_FLAGS = FLAG_REPLIED | FLAG_READ | FLAG_FLAGGED + FLAG_DELETED = 1 << 3 + ALL_FLAGS = FLAG_REPLIED | FLAG_READ | FLAG_FLAGGED | FLAG_DELETED fn: str def __init__(self, mailbox, storage_id, email_id=None): -- cgit v1.2.3