Mercurial > libervia-backend
diff src/core/xmpp.py @ 2132:c0577837680a
core: replaced SkipHistory exception by a key in mess_data:
SkipHistory was skipping all remaining triggers just to skip history, which is not the intented behaviour.
Now history can be skipped by setting mess_data[u'history'] = C.HISTORY_SKIP, this way we won't skip importants triggers.
When history is skipped, mess_data[u'extra'][u'history'] will be set to C.HISTORY_SKIP for frontends, so they can inform user that the message is not stored locally.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 05 Feb 2017 14:55:21 +0100 |
parents | f0bc29dc8157 |
children | cc3a6aea9508 |
line wrap: on
line diff
--- a/src/core/xmpp.py Sun Feb 05 14:55:19 2017 +0100 +++ b/src/core/xmpp.py Sun Feb 05 14:55:21 2017 +0100 @@ -234,7 +234,6 @@ post_treat.addCallback(self.skipEmptyMessage) post_treat.addCallback(self.addToHistory, client) - post_treat.addErrback(self.treatmentsEb) post_treat.addCallback(self.bridgeSignal, client, data) post_treat.addErrback(self.cancelErrorTrap) post_treat.callback(data) @@ -245,10 +244,11 @@ return data def addToHistory(self, data, client): - return self.host.memory.addToHistory(client, data) - - def treatmentsEb(self, failure_): - failure_.trap(exceptions.SkipHistory) + if data.pop(u'history', None) == C.HISTORY_SKIP: + log.info(u'history is skipped as requested') + data[u'extra'][u'history'] = C.HISTORY_SKIP + else: + return self.host.memory.addToHistory(client, data) def bridgeSignal(self, dummy, client, data): try: