From 99d5e25f9bb9a6cbe51973d8409691ad8e5482a1 Mon Sep 17 00:00:00 2001 From: mathieui Date: Wed, 23 Sep 2015 20:28:09 +0200 Subject: Fix various roster count issues disconnections not clearing the number of connected contacts, leading to an ever-increasing count, and roster count not always being setup --- src/core/handlers.py | 2 ++ src/roster.py | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/handlers.py b/src/core/handlers.py index 6572bca4..e17476a4 100644 --- a/src/core/handlers.py +++ b/src/core/handlers.py @@ -748,6 +748,7 @@ def on_roster_update(self, iq): del roster[jid] else: roster.update_contact_groups(jid) + roster.update_size() if isinstance(self.current_tab(), tabs.RosterInfoTab): self.refresh_window() @@ -936,6 +937,7 @@ def on_disconnected(self, event): """ When we are disconnected from remote server """ + roster.connected = 0 # Stop the ping plugin. It would try to send stanza on regular basis self.xmpp.plugin['xep_0199'].disable_keepalive() roster.modified() diff --git a/src/roster.py b/src/roster.py index 7866655f..ba7da63e 100644 --- a/src/roster.py +++ b/src/roster.py @@ -149,9 +149,14 @@ class Roster(object): contact = self.get_and_set(key) if key != self.jid and (contact and self.exists(contact)): l.append(key) - self.length = len(l) + self.update_size(l) return l + def update_size(self, jids=None): + if jids is None: + jids = self.jids() + self.length = len(jids) + def get_contacts(self): """ Return a list of all the contacts -- cgit v1.2.3