Philipp Hörist pushed to branch master at gajim / gajim
Commits:
c208f411 by lovetox at 2020-10-26T21:17:59+01:00
Delimiter: Adapt to nbxmpp changes
- - - - -
1 changed file:
- gajim/common/modules/delimiter.py
Changes:
=====================================
gajim/common/modules/delimiter.py
=====================================
@@ -14,53 +14,41 @@
# XEP-0083: Nested Roster Groups
-import nbxmpp
-from nbxmpp.namespaces import Namespace
+
+from nbxmpp.errors import is_error
+from nbxmpp.modules.util import raise_if_error
from gajim.common.modules.base import BaseModule
+from gajim.common.modules.util import as_task
class Delimiter(BaseModule):
+
+ _nbxmpp_extends = 'Delimiter'
+ _nbxmpp_methods = [
+ 'request_delimiter',
+ 'set_delimiter'
+ ]
+
def __init__(self, con):
BaseModule.__init__(self, con)
self.available = False
self.delimiter = '::'
+ @as_task
def get_roster_delimiter(self):
- self._log.info('Request')
- node = nbxmpp.Node('storage', attrs={'xmlns': 'roster:delimiter'})
- iq = nbxmpp.Iq('get', Namespace.PRIVATE, payload=node)
-
- self._con.connection.SendAndCallForResponse(
- iq, self._delimiter_received)
+ _task = yield
- def _delimiter_received(self, _nbxmpp_client, stanza):
- if not nbxmpp.isResultNode(stanza):
- self._log.info('Request error: %s', stanza.getError())
- else:
- delimiter = stanza.getQuery().getTagData('roster')
- self.available = True
- self._log.info('Delimiter received: %s', delimiter)
- if delimiter:
- self.delimiter = delimiter
- else:
- self.set_roster_delimiter()
+ delimiter = yield self.request_delimiter()
+ if is_error(delimiter) or delimiter is None:
+ result = yield self.set_delimiter(self.delimiter)
+ raise_if_error(result)
+ delimiter = self.delimiter
+ self.delimiter = delimiter
+ self.available = True
self._con.connect_machine()
- def set_roster_delimiter(self):
- self._log.info('Set delimiter')
- iq = nbxmpp.Iq('set', Namespace.PRIVATE)
- roster = iq.getQuery().addChild('roster', namespace='roster:delimiter')
- roster.setData('::')
-
- self._con.connection.SendAndCallForResponse(
- iq, self._set_delimiter_response)
-
- def _set_delimiter_response(self, _nbxmpp_client, stanza):
- if not nbxmpp.isResultNode(stanza):
- self._log.info('Store error: %s', stanza.getError())
-
def get_instance(*args, **kwargs):
return Delimiter(*args, **kwargs), 'Delimiter'
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/c208f411a3887facea0e5fdb111e6fda3dc6f041
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/c208f411a3887facea0e5fdb111e6fda3dc6f041
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits