friends: Only set friends lists if there are no errors
This commit is contained in:
parent
8b08c91968
commit
283d7fa3cd
|
|
@ -179,6 +179,8 @@ class MakeFriendsOperation(FriendsOperation):
|
||||||
self.context = None
|
self.context = None
|
||||||
self.resultCode = None
|
self.resultCode = None
|
||||||
self.onlineToons = None
|
self.onlineToons = None
|
||||||
|
self.avatarAFriendsList = None
|
||||||
|
self.avatarBFriendsList = None
|
||||||
|
|
||||||
def start(self, avatarAId, avatarBId, flags, context):
|
def start(self, avatarAId, avatarBId, flags, context):
|
||||||
self.avatarAId = avatarAId
|
self.avatarAId = avatarAId
|
||||||
|
|
@ -197,22 +199,43 @@ class MakeFriendsOperation(FriendsOperation):
|
||||||
self.__handleActivatedResp(avId, activated)
|
self.__handleActivatedResp(avId, activated)
|
||||||
self.friendsManager.air.getActivated(self.avatarBId, self.__gotActivatedAvatarB)
|
self.friendsManager.air.getActivated(self.avatarBId, self.__gotActivatedAvatarB)
|
||||||
|
|
||||||
def __handleMakeFriends(self, dclass, fields, avId, friendId):
|
def __handleMakeFriends(self, dclass, fields, friendId):
|
||||||
if dclass != self.friendsManager.air.dclassesByName['DistributedToonUD']:
|
if dclass != self.friendsManager.air.dclassesByName['DistributedToonUD']:
|
||||||
self._handleError('Retrieved avatar is not a DistributedToonUD!')
|
self._handleError('Retrieved avatar is not a DistributedToonUD!')
|
||||||
return
|
return False, []
|
||||||
|
|
||||||
friendsList = fields['setFriendsList'][0]
|
friendsList = fields['setFriendsList'][0]
|
||||||
if len(friendsList) >= OTPGlobals.MaxFriends:
|
if len(friendsList) >= OTPGlobals.MaxFriends:
|
||||||
self._handleError('Avatar\'s friends list is full!')
|
self._handleError('Avatar\'s friends list is full!')
|
||||||
return
|
return False, []
|
||||||
|
|
||||||
newFriend = (friendId, self.flags)
|
newFriend = (friendId, self.flags)
|
||||||
if newFriend in friendsList:
|
if newFriend in friendsList:
|
||||||
self._handleError('Already friends!')
|
self._handleError('Already friends!')
|
||||||
return
|
return False, []
|
||||||
|
|
||||||
friendsList.append(newFriend)
|
friendsList.append(newFriend)
|
||||||
|
return True, friendsList
|
||||||
|
|
||||||
|
def __handleAvatarARetrieved(self, dclass, fields):
|
||||||
|
success, avatarAFriendsList = self.__handleMakeFriends(dclass, fields, self.avatarBId)
|
||||||
|
if success:
|
||||||
|
self.avatarAFriendsList = avatarAFriendsList
|
||||||
|
self.friendsManager.air.dbInterface.queryObject(self.friendsManager.air.dbId, self.avatarBId,
|
||||||
|
self.__handleAvatarBRetrieved)
|
||||||
|
|
||||||
|
def __gotActivatedAvatarB(self, avId, activated):
|
||||||
|
self.__handleActivatedResp(avId, activated)
|
||||||
|
self.friendsManager.air.dbInterface.queryObject(self.friendsManager.air.dbId, self.avatarAId,
|
||||||
|
self.__handleAvatarARetrieved)
|
||||||
|
|
||||||
|
def __handleAvatarBRetrieved(self, dclass, fields):
|
||||||
|
success, avatarBFriendsList = self.__handleMakeFriends(dclass, fields, self.avatarAId)
|
||||||
|
if success:
|
||||||
|
self.avatarBFriendsList = avatarBFriendsList
|
||||||
|
self._handleDone()
|
||||||
|
|
||||||
|
def __handleSetFriendsList(self, avId, friendsList):
|
||||||
if avId in self.onlineToons:
|
if avId in self.onlineToons:
|
||||||
self.friendsManager.sendUpdateToAvatar(avId, 'setFriendsList', [friendsList])
|
self.friendsManager.sendUpdateToAvatar(avId, 'setFriendsList', [friendsList])
|
||||||
else:
|
else:
|
||||||
|
|
@ -221,22 +244,10 @@ class MakeFriendsOperation(FriendsOperation):
|
||||||
'DistributedToonUD'],
|
'DistributedToonUD'],
|
||||||
{'setFriendsList': [friendsList]})
|
{'setFriendsList': [friendsList]})
|
||||||
|
|
||||||
def __handleAvatarARetrieved(self, dclass, fields):
|
|
||||||
self.__handleMakeFriends(dclass, fields, self.avatarAId, self.avatarBId)
|
|
||||||
self.friendsManager.air.dbInterface.queryObject(self.friendsManager.air.dbId, self.avatarBId,
|
|
||||||
self.__handleAvatarBRetrieved)
|
|
||||||
|
|
||||||
def __gotActivatedAvatarB(self, avId, activated):
|
|
||||||
self.__handleActivatedResp(avId, activated)
|
|
||||||
self.friendsManager.air.dbInterface.queryObject(self.friendsManager.air.dbId, self.avatarAId,
|
|
||||||
self.__handleAvatarARetrieved)
|
|
||||||
|
|
||||||
def __handleAvatarBRetrieved(self, dclass, fields):
|
|
||||||
self.__handleMakeFriends(dclass, fields, self.avatarBId, self.avatarAId)
|
|
||||||
self._handleDone()
|
|
||||||
|
|
||||||
def _handleDone(self):
|
def _handleDone(self):
|
||||||
self.resultCode = 1
|
self.resultCode = 1
|
||||||
|
self.__handleSetFriendsList(self.avatarAId, self.avatarAFriendsList)
|
||||||
|
self.__handleSetFriendsList(self.avatarBId, self.avatarBFriendsList)
|
||||||
self.friendsManager.sendMakeFriendsResponse(self.avatarAId, self.avatarBId, self.resultCode, self.context)
|
self.friendsManager.sendMakeFriendsResponse(self.avatarAId, self.avatarBId, self.resultCode, self.context)
|
||||||
FriendsOperation._handleDone(self)
|
FriendsOperation._handleDone(self)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue