summaryrefslogtreecommitdiff
path: root/src/leap/mail/imap
diff options
context:
space:
mode:
Diffstat (limited to 'src/leap/mail/imap')
-rw-r--r--src/leap/mail/imap/fetch.py12
-rw-r--r--src/leap/mail/imap/mailbox.py19
2 files changed, 20 insertions, 11 deletions
diff --git a/src/leap/mail/imap/fetch.py b/src/leap/mail/imap/fetch.py
index 6e12b3f..8e94051 100644
--- a/src/leap/mail/imap/fetch.py
+++ b/src/leap/mail/imap/fetch.py
@@ -395,8 +395,11 @@ class LeapIncomingMail(object):
def _delete_incoming_message(self, doc):
"""
Delete document.
+
+ :param doc: the SoledadDocument to delete
+ :type doc: SoledadDocument
"""
- log.msg("Deleting SoledadDoc %s" % (doc.doc_id))
+ log.msg("Deleting Incoming message: %s" % (doc.doc_id,))
self._soledad.delete_doc(doc)
def _maybe_decrypt_msg(self, data):
@@ -598,12 +601,11 @@ class LeapIncomingMail(object):
def msgSavedCallback(result):
if not empty(result):
leap_events.signal(IMAP_MSG_SAVED_LOCALLY)
- deferLater(reactor, 0, self._delete_incoming_message, result)
+ deferLater(reactor, 0, self._delete_incoming_message, doc)
leap_events.signal(IMAP_MSG_DELETED_INCOMING)
- deferLater(reactor, 1, self._signal_unread_to_ui)
- # XXX should pass a notify_on_disk=True along...
- d = self._inbox.addMessage(data, flags=(self.RECENT_FLAG,))
+ d = self._inbox.addMessage(data, flags=(self.RECENT_FLAG,),
+ notify_on_disk=True)
d.addCallbacks(msgSavedCallback, self._errback)
#
diff --git a/src/leap/mail/imap/mailbox.py b/src/leap/mail/imap/mailbox.py
index 503e38b..47c7ff1 100644
--- a/src/leap/mail/imap/mailbox.py
+++ b/src/leap/mail/imap/mailbox.py
@@ -439,7 +439,7 @@ class SoledadMailbox(WithMsgFields, MBoxParser):
r[self.CMD_UNSEEN] = self.getUnseenCount()
return defer.succeed(r)
- def addMessage(self, message, flags, date=None):
+ def addMessage(self, message, flags, date=None, notify_on_disk=False):
"""
Adds a message to this mailbox.
@@ -465,23 +465,29 @@ class SoledadMailbox(WithMsgFields, MBoxParser):
else:
flags = tuple(str(flag) for flag in flags)
- d = self._do_add_message(message, flags=flags, date=date)
+ d = self._do_add_message(message, flags=flags, date=date,
+ notify_on_disk=notify_on_disk)
if PROFILE_CMD:
do_profile_cmd(d, "APPEND")
# A better place for this would be the COPY/APPEND dispatcher
# in server.py, but qtreactor hangs when I do that, so this seems
# to work fine for now.
- d.addCallback(lambda r: self.reactor.callLater(0, self.notify_new))
- d.addCallback(self.cb_signal_unread_to_ui)
+
+ def notifyCallback(x):
+ self.reactor.callLater(0, self.notify_new)
+ return x
+
+ d.addCallback(notifyCallback)
d.addErrback(lambda f: log.msg(f.getTraceback()))
return d
- def _do_add_message(self, message, flags, date):
+ def _do_add_message(self, message, flags, date, notify_on_disk=False):
"""
Calls to the messageCollection add_msg method.
Invoked from addMessage.
"""
- d = self.messages.add_msg(message, flags=flags, date=date)
+ d = self.messages.add_msg(message, flags=flags, date=date,
+ notify_on_disk=notify_on_disk)
return d
def notify_new(self, *args):
@@ -499,6 +505,7 @@ class SoledadMailbox(WithMsgFields, MBoxParser):
l.newMessages(exists, recent)
d = self._get_notify_count()
d.addCallback(cbNotifyNew)
+ d.addCallback(self.cb_signal_unread_to_ui)
@deferred_to_thread
def _get_notify_count(self):