Better listening for buddylist overlay and chatbox presence
This commit is contained in:
@@ -2491,22 +2491,43 @@ class Client(object):
|
|||||||
buddylist = dict()
|
buddylist = dict()
|
||||||
for _id in m.get('buddyList', {}):
|
for _id in m.get('buddyList', {}):
|
||||||
payload = m['buddyList'][_id]
|
payload = m['buddyList'][_id]
|
||||||
|
|
||||||
last_active = payload.get('lat')
|
last_active = payload.get('lat')
|
||||||
active = time.time() - last_active <= 60
|
active = payload.get('p') in [2, 3]
|
||||||
in_game = int(_id) in m.get('gamers', {})
|
in_game = int(_id) in m.get('gamers', {})
|
||||||
|
|
||||||
buddylist[_id] = last_active
|
buddylist[_id] = last_active
|
||||||
self._buddylist[_id] = ActiveStatus(active=active, last_active=last_active, in_game=in_game)
|
|
||||||
|
if self._buddylist.get(_id):
|
||||||
|
self._buddylist[_id].last_active = last_active
|
||||||
|
self._buddylist[_id].active = active
|
||||||
|
self._buddylist[_id].in_game = in_game
|
||||||
|
else:
|
||||||
|
self._buddylist[_id] = ActiveStatus(active=active, last_active=last_active, in_game=in_game)
|
||||||
|
|
||||||
self.onChatTimestamp(buddylist=buddylist, msg=m)
|
self.onChatTimestamp(buddylist=buddylist, msg=m)
|
||||||
|
|
||||||
|
# Buddylist overlay
|
||||||
elif mtype == "buddylist_overlay":
|
elif mtype == "buddylist_overlay":
|
||||||
statuses = dict()
|
statuses = dict()
|
||||||
for _id in m.get('overlay', {}):
|
for _id in m.get('overlay', {}):
|
||||||
payload = m['overlay'][_id]
|
payload = m['overlay'][_id]
|
||||||
|
|
||||||
last_active = payload.get('la')
|
last_active = payload.get('la')
|
||||||
active = payload.get('a') in [2, 3]
|
active = payload.get('a') in [2, 3]
|
||||||
in_game = self._buddylist[_id].in_game if self._buddylist.get(_id) else False
|
in_game = self._buddylist[_id].in_game if self._buddylist.get(_id) else False
|
||||||
self._buddylist[_id] = ActiveStatus(active=active, last_active=last_active, in_game=in_game)
|
|
||||||
statuses[_id] = ActiveStatus(active=active, last_active=last_active, in_game=in_game)
|
status = ActiveStatus(active=active, last_active=last_active, in_game=in_game)
|
||||||
|
|
||||||
|
if self._buddylist.get(_id):
|
||||||
|
self._buddylist[_id].last_active = last_active
|
||||||
|
self._buddylist[_id].active = active
|
||||||
|
self._buddylist[_id].in_game = in_game
|
||||||
|
else:
|
||||||
|
self._buddylist[_id] = status
|
||||||
|
|
||||||
|
statuses[_id] = status
|
||||||
|
|
||||||
self.onBuddylistOverlay(statuses=statuses, msg=m)
|
self.onBuddylistOverlay(statuses=statuses, msg=m)
|
||||||
|
|
||||||
# Unknown message type
|
# Unknown message type
|
||||||
|
Reference in New Issue
Block a user