Mercurial > libervia-backend
changeset 347:ea3e1b82dd79
core: contact deletion from roster if we have no subscription to it (behaviour may change in futur)
quick frontend: groups is updated in contactList in case of roster push
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 29 May 2011 16:12:08 +0200 |
parents | ca3a041fed30 |
children | 8ff113e2abcb |
files | frontends/src/quick_frontend/quick_app.py frontends/src/quick_frontend/quick_contact_management.py src/core/sat_main.py src/core/xmpp.py |
diffstat | 4 files changed, 17 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/frontends/src/quick_frontend/quick_app.py Sat May 28 20:28:21 2011 +0200 +++ b/frontends/src/quick_frontend/quick_app.py Sun May 29 16:12:08 2011 +0200 @@ -203,7 +203,11 @@ if not self.check_profile(profile): return entity=JID(JabberId) - self.rosterList[entity.short]=(dict(attributes), list(groups)) + _groups = list(groups) + self.rosterList[entity.short]=(dict(attributes), _groups) + if entity in self.CM: + self.CM.update(entity, 'groups', _groups) + self.contactList.replace(entity, self.CM.getAttr(entity, 'groups')) def newMessage(self, from_jid, msg, type, to_jid, profile): if not self.check_profile(profile):
--- a/frontends/src/quick_frontend/quick_contact_management.py Sat May 28 20:28:21 2011 +0200 +++ b/frontends/src/quick_frontend/quick_contact_management.py Sun May 29 16:12:08 2011 +0200 @@ -31,6 +31,9 @@ def __init__(self): self.__contactlist = {} + def __contains__(self, entity): + return entity.short in self.__contactlist + def clear(self): """Clear all the contact list""" self.__contactlist.clear() @@ -39,6 +42,8 @@ """Add contact to the list, update resources""" if not self.__contactlist.has_key(entity.short): self.__contactlist[entity.short] = {'resources':[]} + if not entity.resource: + return if entity.resource in self.__contactlist[entity.short]['resources']: self.__contactlist[entity.short]['resources'].remove(entity.resource) self.__contactlist[entity.short]['resources'].append(entity.resource)
--- a/src/core/sat_main.py Sat May 28 20:28:21 2011 +0200 +++ b/src/core/sat_main.py Sun May 29 16:12:08 2011 +0200 @@ -475,7 +475,6 @@ to_jid=jid.JID(to) self.profiles[profile].roster.removeItem(to_jid) self.profiles[profile].presence.unsubscribe(to_jid) - self.bridge.contactDeleted(to, profile) ## callbacks ##
--- a/src/core/xmpp.py Sat May 28 20:28:21 2011 +0200 +++ b/src/core/xmpp.py Sun May 29 16:12:08 2011 +0200 @@ -158,6 +158,12 @@ def onRosterSet(self, item): """Called when a new/update roster item is received""" #TODO: send a signal to frontends + if not item.subscriptionTo and not item.subscriptionFrom and not item.ask: + #XXX: current behaviour: we don't want contact in our roster list + #if there is no presence subscription + #may change in the future + self.removeItem(item.jid) + return item_attr = {'to': str(item.subscriptionTo), 'from': str(item.subscriptionFrom), 'ask': str(item.ask) @@ -171,9 +177,9 @@ def onRosterRemove(self, entity): """Called when a roster removal event is received""" - #TODO: send a signal to frontends print _("removing %s from roster list") % entity.full() self.host.memory.delContact(entity, self.parent.profile) + self.host.bridge.contactDeleted(entity.userhost(), self.parent.profile) def getGroups(self): """Return a set of groups"""