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

Reply via email to