Philipp Hörist pushed to branch mainwindow at gajim / gajim


Commits:
8293075c by lovetox at 2021-03-15T20:37:40+01:00
add get_groups()

- - - - -


1 changed file:

- gajim/common/modules/roster.py


Changes:

=====================================
gajim/common/modules/roster.py
=====================================
@@ -45,6 +45,9 @@ def __init__(self, con):
 
         self._roster = {}
 
+        # Groups cache for performance
+        self._groups = None
+
     def load_roster(self):
         self._log.info('Load from database')
         roster = app.storage.cache.load_roster(self._account)
@@ -105,6 +108,8 @@ def _on_request_roster(self, task):
 
     def _set_roster_from_data(self, items):
         self._roster.clear()
+        self._groups = None
+
         for item in items:
             self._log.info(item)
             self._con.get_module('Contacts').add_contact(item.jid)
@@ -121,6 +126,7 @@ def _process_roster_push(self, _con, _stanza, properties):
         else:
             self._roster[item.jid] = item
 
+        self._groups = None
         self._store_roster()
 
         self._log.info('New version: %s', properties.roster.version)
@@ -143,6 +149,16 @@ def set_groups(self, jid, groups):
         item = self.get_item(jid)
         self._nbxmpp('Roster').set_item(jid, item.name, groups)
 
+    def get_groups(self):
+        if self._groups is not None:
+            return set(self._groups)
+
+        groups = set()
+        for item in self._roster.values():
+            groups.update(item.groups)
+        self._groups = groups
+        return set(groups)
+
     def change_group(self, jid, old_group, new_group):
         item = self.get_item(jid)
         groups = set(item.groups)



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/8293075c2ab4d6dc804797a216b3bbb2b63c1649

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/8293075c2ab4d6dc804797a216b3bbb2b63c1649
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
Commits@gajim.org
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to