Request new profile picture on profile picture changed notification

This commit is contained in:
moyamo 2016-01-07 11:47:33 +02:00
parent 16bdc85471
commit 59f0af9f8d
2 changed files with 17 additions and 2 deletions

View File

@ -457,6 +457,11 @@ class Session(YowsupApp):
except KeyError:
self.logger.debug("%s not in buddy list", number)
# Called by superclass
def onContactPictureChanged(self, number):
self.logger.debug("%s changed their profile picture", number)
self.buddies.requestVCard(number)
def onPresenceReceived(self, _type, name, jid, lastseen):
self.logger.info("Presence received: %s %s %s %s", _type, name, jid, lastseen)
buddy = jid.split("@")[0]
@ -471,7 +476,7 @@ class Session(YowsupApp):
if (lastseen == str(buddy.lastseen)) and (_type == buddy.presence):
return
if ((lastseen != "deny") and (lastseen != None) and (lastseen != "none")):
if ((lastseen != "deny") and (lastseen != None) and (lastseen != "none")):
buddy.lastseen = int(lastseen)
if (_type == None):
buddy.lastseen = time.time()

View File

@ -549,12 +549,19 @@ class YowsupApp(object):
def onContactStatusChanged(self, number, status):
"""Called when a contacts changes their status
Args
Args:
number: (str) the number of the contact who changed their status
status: (str) the new status
"""
pass
def onContactPictureChanged(self, number):
"""Called when a contact changes their profile picture
Args
number: (str) the number of the contact who changed their picture
"""
pass
def sendEntity(self, entity):
"""Sends an entity down the stack (as if YowsupAppLayer called toLower)"""
self.stack.broadcastEvent(YowLayerEvent(YowsupAppLayer.TO_LOWER_EVENT,
@ -666,6 +673,9 @@ class YowsupAppLayer(YowInterfaceLayer):
entity._from.split('@')[0],
entity.status
)
elif (isinstance(entity, SetPictureNotificationProtocolEntity) or
isinstance(entity, DeletePictureNotificationProtocolEntity)):
self.caller.onContactPictureChanged(entity.setJid.split('@')[0])
@ProtocolEntityCallback('message')
def onMessageReceived(self, entity):