diff options
author | Georg Lukas <georg@op-co.de> | 2019-02-25 17:47:58 +0100 |
---|---|---|
committer | Maxime “pep” Buquet <pep@bouah.net> | 2019-03-17 11:25:02 +0000 |
commit | c7c3ea49ce98faa2d93392cca35621dca564946d (patch) | |
tree | da29ec828fee8d1df4d9f4d03f9b33fdd19b332c | |
parent | 8cbd8dabdd23bb268b4431d6d9443abfb88e79d9 (diff) | |
download | poezio-c7c3ea49ce98faa2d93392cca35621dca564946d.tar.gz poezio-c7c3ea49ce98faa2d93392cca35621dca564946d.tar.bz2 poezio-c7c3ea49ce98faa2d93392cca35621dca564946d.tar.xz poezio-c7c3ea49ce98faa2d93392cca35621dca564946d.zip |
MUC: update the presence window after each ~10 incoming presences
-rw-r--r-- | poezio/tabs/muctab.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/poezio/tabs/muctab.py b/poezio/tabs/muctab.py index 41a8e089..d77aaf39 100644 --- a/poezio/tabs/muctab.py +++ b/poezio/tabs/muctab.py @@ -448,8 +448,9 @@ class MucTab(ChatTab): if presence['type'] == 'error': self.core.room_error(presence, self.name) elif not self.joined: - if '110' in status_codes or self.own_nick == presence['from'].resource: - self.process_presence_buffer(presence) + own = '110' in status_codes or self.own_nick == presence['from'].resource + if own or len(self.presence_buffer) >= 10: + self.process_presence_buffer(presence, own) else: self.presence_buffer.append(presence) return @@ -467,7 +468,7 @@ class MucTab(ChatTab): self.input.refresh() self.core.doupdate() - def process_presence_buffer(self, last_presence): + def process_presence_buffer(self, last_presence, own): """ Batch-process all the initial presences """ @@ -479,11 +480,13 @@ class MucTab(ChatTab): self.handle_presence_unjoined(stanza, deterministic) except PresenceError: self.core.room_error(stanza, stanza['from'].bare) - self.handle_presence_unjoined(last_presence, deterministic, own=True) + self.presence_buffer = [] + self.handle_presence_unjoined(last_presence, deterministic, own) self.users.sort() # Enable the self ping event, to regularly check if we # are still in the room. - self.enable_self_ping_event() + if own: + self.enable_self_ping_event() if self.core.tabs.current_tab is not self: self.refresh_tab_win() self.core.tabs.current_tab.refresh_input() |