# Copyright 2004-2005 James Bunton <james@delx.cjb.net>
# Licensed for distribution under the GPL version 2, check COPYING for details
+from tlib.xmlw import jid
+
import utils
import legacy
import jabw
LogEvent(INFO, self.jabberID)
vCard = None
for e in el.elements():
- if e.name == "vCard" and e.defaultUri == disco.VCARDTEMP:
+ if e.name == "vCard" and e.uri == disco.VCARDTEMP:
vCard = e
break
else:
self.legacycon.updateAvatar() # Default avatar
return
avatarSet = False
+ name = ""
for e in vCard.elements():
- if e.name == "NICKNAME":
- self.updateNickname(e.__str__())
+ if e.name == "NICKNAME" and e.__str__():
+ name = e.__str__()
+ if not name and e.name == "FN" and e.__str__():
+ # Give priority to nickname
+ name = e.__str__()
if e.name == "PHOTO":
imageData = avatar.parsePhotoEl(e)
if not imageData:
self.avatar = self.pytrans.avatarCache.setAvatar(imageData)
self.legacycon.updateAvatar(self.avatar)
avatarSet = True
+ if name:
+ self.updateNickname(name)
if not avatarSet:
self.legacycon.updateAvatar() # Default avatar
self.legacycon.updateAvatar()
LogEvent(INFO, self.jabberID, "Fetching avatar.")
- d = self.sendVCardRequest(to=self.jabberID, fro=config.jid)
+ d = self.sendVCardRequest(to=self.jabberID, fro=config.jid + "/msn")
d.addCallback(vCardReceived)
d.addErrback(errback)
def updateNickname(self, nickname):
self.nickname = nickname
if not self.nickname:
- j = utils.jid(self.jabberID)
+ j = jid.intern(self.jabberID)
self.nickname = j.user
self.setStatus(self.show, self.status)
if avatarHash == " ": # Setting no avatar
self.legacycon.updateAvatar() # Default
elif (not self.avatar) or (self.avatar and self.avatar.getImageHash() != avatarHash):
- imageData = self.pytrans.avatarCache.getAvatar(avatarHash)
- if imageData:
- self.avatar = avatar.Avatar(imageData) # Stuff in the cache is always PNG
+ av = self.pytrans.avatarCache.getAvatar(avatarHash)
+ if av:
+ self.avatar = av # Stuff in the cache is always PNG
self.legacycon.updateAvatar(self.avatar)
else:
self.doVCardUpdate()
groupchat = legacy.LegacyGroupchat(self, resource, gcID) # Creates an empty groupchat
groupchat.userJoined(tor)
+ elif ptype == "probe":
+ LogEvent(INFO, self.jabberID, "Responding to presence probe")
+ if to == config.jid:
+ self.legacycon.sendShowStatus(source)
+ else:
+ self.contactList.getContact(to).sendPresence(source)
else:
# Not for groupchat
self.handleResourcePresence(source, resource, to, tor, priority, ptype, show, status)
del self.resourceList[resource]
self.legacycon.resourceOffline(resource)
- def subscriptionReceived(self, to, subtype):
+ def subscriptionReceived(self, fro, to, subtype):
""" Sends the subscription request to the legacy services handler """
if to.find('@') > 0:
- LogEvent(INFO, self.jabberID, "Passing subscription to legacy service.")
- self.contactList.jabberSubscriptionReceived(to, subtype)
+ if self.ready:
+ LogEvent(INFO, self.jabberID, "Passing subscription to legacy service.")
+ self.contactList.jabberSubscriptionReceived(to, subtype)
+ else:
+ self.sendPresence(fro, to, ptype="error")
else:
if subtype == "subscribe":
self.sendPresence(to=self.jabberID, fro=config.jid, ptype="subscribed")