diff options
-rw-r--r-- | src/leap/mail/imap/fetch.py | 12 | ||||
-rw-r--r-- | src/leap/mail/imap/mailbox.py | 19 |
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): |