Mercurial > libervia-web
changeset 455:05e98b8d9f02
browser side: display messages from contacts not in roster
author | souliane <souliane@mailoo.org> |
---|---|
date | Thu, 29 May 2014 15:51:26 +0200 |
parents | 3ef6ce200c27 |
children | da2a7f2b34c9 |
files | src/browser/contact.py src/browser/libervia_main.py |
diffstat | 2 files changed, 19 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/browser/contact.py Mon May 26 14:25:56 2014 +0200 +++ b/src/browser/contact.py Thu May 29 15:51:26 2014 +0200 @@ -198,10 +198,15 @@ else: sender.onClick(sender) - def add(self, jid, name=None): + def add(self, jid_s, name=None): + """Add a contact + + @param jid_s (str): JID as unicode + @param name (str): nickname + """ def item_cb(item): self.context_menu.registerRightClickSender(item) - GenericContactList.add(self, jid, name, item_cb) + GenericContactList.add(self, jid_s, name, item_cb) def setState(self, jid, type_, state): """Change the appearance of the contact, according to the state @@ -275,18 +280,18 @@ ideal_height = tab_bar_h - DOM.getAbsoluteTop(contact_panel_elt) - 5 self.scroll_panel.setHeight("%s%s" % (ideal_height, "px")) - def updateContact(self, jid, attributes, groups): + def updateContact(self, jid_s, attributes, groups): """Add a contact to the panel if it doesn't exist, update it else - @param jid: jid userhost as unicode - @attributes: cf SàT Bridge API's newContact + @param jid_s: jid userhost as unicode + @param attributes: cf SàT Bridge API's newContact @param groups: list of groups""" - _current_groups = self.getContactGroups(jid) + _current_groups = self.getContactGroups(jid_s) _new_groups = set(groups) _key = "@%s: " for group in _current_groups.difference(_new_groups): # We remove the contact from the groups where he isn't anymore - self.groups[group].remove(jid) + self.groups[group].remove(jid_s) if not self.groups[group]: # The group is now empty, we must remove it del self.groups[group] @@ -301,10 +306,10 @@ self._groupList.add(group) if self.host.uni_box: self.host.uni_box.addKey(_key % group) - self.groups[group].add(jid) + self.groups[group].add(jid_s) # We add the contact to contact list, it will check if contact already exists - self._contact_list.add(jid) + self._contact_list.add(jid_s) def removeContact(self, jid): """Remove contacts from groups where he is and contact list""" @@ -359,14 +364,14 @@ contacts.sort() return contacts if not filter_muc else list(set(contacts).intersection(set(self.getContacts()))) - def getContactGroups(self, contact_jid): + def getContactGroups(self, contact_jid_s): """Get groups where contact is @param group: string of single group, or list of string - @param contact_jid: jid to test + @param contact_jid_s: jid to test, as unicode """ result = set() for group in self.groups: - if self.isContactInGroup(group, contact_jid): + if self.isContactInGroup(group, contact_jid_s): result.add(group) return result
--- a/src/browser/libervia_main.py Mon May 26 14:25:56 2014 +0200 +++ b/src/browser/libervia_main.py Thu May 29 15:51:26 2014 +0200 @@ -680,6 +680,8 @@ if lib_wid is not None: lib_wid.printMessage(_from, msg, extra) else: + if not self.contact_panel.isContactInRoster(other.bare): + self.contact_panel.updateContact(other.bare, {}, [C.GROUP_NOT_IN_ROSTER]) # The message has not been shown, we must indicate it self.contact_panel.setContactMessageWaiting(other.bare, True)