adium 2249:4e4e0005bbc2: Set the PurpleBuddy's alias when adding...

commits at adium.im commits at adium.im
Wed May 20 04:39:39 UTC 2009


details:	http://hg.adium.im/adium/rev/4e4e0005bbc2
revision:	2249:4e4e0005bbc2
author:		Zachary West <zacw at adium.im>
date:		Wed May 20 00:39:33 2009 -0400

Set the PurpleBuddy's alias when adding to the buddy list, which is how Pidgin operates.

This helps _avoid_ an MSN crash where we'd set alias immediately after adding though the MSN prpl doesn't yet support setting alias on add.

diffstat:

 Plugins/Purple Service/CBPurpleAccount.m      |  10 ++++++++--
 Plugins/Purple Service/SLPurpleCocoaAdapter.h |   4 ++--
 Plugins/Purple Service/SLPurpleCocoaAdapter.m |  15 ++++++++-------
 3 files changed, 18 insertions(+), 11 deletions(-)

diffs (97 lines):

diff -r cb426796108e -r 4e4e0005bbc2 Plugins/Purple Service/CBPurpleAccount.m
--- a/Plugins/Purple Service/CBPurpleAccount.m	Tue May 19 15:22:35 2009 -0400
+++ b/Plugins/Purple Service/CBPurpleAccount.m	Wed May 20 00:39:33 2009 -0400
@@ -627,7 +627,10 @@
 	if(![group containsObject:contact]) {
 		AILogWithSignature(@"%@ adding %@ to %@", self, [self _UIDForAddingObject:contact], groupName);
 		
-		[purpleAdapter addUID:[self _UIDForAddingObject:contact] onAccount:self toGroup:groupName];
+		NSString *alias = [contact.parentContact preferenceForKey:@"Alias"
+						   group:PREF_GROUP_ALIASES];
+		
+		[purpleAdapter addUID:[self _UIDForAddingObject:contact] onAccount:self toGroup:groupName withAlias:alias];
 		
 		//Add it to Adium's list
 		[contact addRemoteGroupName:group.UID]; //Use the non-mapped group name locally
@@ -657,8 +660,11 @@
 
 	//Move the objects to it
 	for (AIListContact *contact in objects) {
+		NSString *alias = [contact.parentContact preferenceForKey:@"Alias"
+						   group:PREF_GROUP_ALIASES];
+		
 		//Tell the purple thread to perform the serverside operation
-		[purpleAdapter moveUID:contact.UID onAccount:self fromGroups:sourceMappedNames toGroups:destinationMappedNames];
+		[purpleAdapter moveUID:contact.UID onAccount:self fromGroups:sourceMappedNames toGroups:destinationMappedNames withAlias:alias];
 
 		for (AIListGroup *group in oldGroups) {
 			[contact removeRemoteGroupName:group.UID];
diff -r cb426796108e -r 4e4e0005bbc2 Plugins/Purple Service/SLPurpleCocoaAdapter.h
--- a/Plugins/Purple Service/SLPurpleCocoaAdapter.h	Tue May 19 15:22:35 2009 -0400
+++ b/Plugins/Purple Service/SLPurpleCocoaAdapter.h	Wed May 20 00:39:33 2009 -0400
@@ -50,9 +50,9 @@
 
 - (void)sendTyping:(AITypingState)typingState inChat:(AIChat *)chat;
 
-- (void)addUID:(NSString *)objectUID onAccount:(id)adiumAccount toGroup:(NSString *)groupName;
+- (void)addUID:(NSString *)objectUID onAccount:(id)adiumAccount toGroup:(NSString *)groupName withAlias:(NSString *)alias;
 - (void)removeUID:(NSString *)objectUID onAccount:(id)adiumAccount fromGroup:(NSString *)groupName;
-- (void)moveUID:(NSString *)objectUID onAccount:(id)adiumAccount fromGroups:(NSSet *)groupNames toGroups:(NSSet *)groupNames;
+- (void)moveUID:(NSString *)objectUID onAccount:(id)adiumAccount fromGroups:(NSSet *)groupNames toGroups:(NSSet *)groupNames withAlias:(NSString *)alias;
 - (void)renameGroup:(NSString *)oldGroupName onAccount:(id)adiumAccount to:(NSString *)newGroupName;
 - (void)deleteGroup:(NSString *)groupName onAccount:(id)adiumAccount;
 
diff -r cb426796108e -r 4e4e0005bbc2 Plugins/Purple Service/SLPurpleCocoaAdapter.m
--- a/Plugins/Purple Service/SLPurpleCocoaAdapter.m	Tue May 19 15:22:35 2009 -0400
+++ b/Plugins/Purple Service/SLPurpleCocoaAdapter.m	Wed May 20 00:39:33 2009 -0400
@@ -953,10 +953,10 @@
 	}	
 }
 
-- (void)addUID:(NSString *)objectUID onAccount:(id)adiumAccount toGroup:(NSString *)groupName
+- (void)addUID:(NSString *)objectUID onAccount:(id)adiumAccount toGroup:(NSString *)groupName withAlias:(NSString *)alias
 {
 	PurpleAccount *account = accountLookupFromAdiumAccount(adiumAccount);
-	const char	*groupUTF8String, *buddyUTF8String;
+	const char	*groupUTF8String, *buddyUTF8String, *aliasUTF8String;
 	PurpleGroup	*group;
 	PurpleBuddy	*buddy;
 	
@@ -968,12 +968,13 @@
 	}
 	
 	buddyUTF8String = [objectUID UTF8String];
+	aliasUTF8String = alias.length ? [alias UTF8String] : NULL;
 	
 	// Find an existing buddy in the group.
 	buddy = purple_find_buddy_in_group(account, buddyUTF8String, group);
-	if (!buddy) buddy = purple_buddy_new(account, buddyUTF8String, NULL);
+	if (!buddy) buddy = purple_buddy_new(account, buddyUTF8String, aliasUTF8String);
 
-	AILog(@"Adding buddy %s to group %s",purple_buddy_get_name(buddy), group->name);
+	AILog(@"Adding buddy %s to group %s with alias %s",purple_buddy_get_name(buddy), group->name, aliasUTF8String);
 
 	/* purple_blist_add_buddy() will move an existing contact serverside, but will not add a buddy serverside.
 	 * We're working with a new contact, hopefully, so we want to call serv_add_buddy() after modifying the purple list.
@@ -1009,18 +1010,18 @@
 	}
 }
 
-- (void)moveUID:(NSString *)objectUID onAccount:(id)adiumAccount fromGroups:(NSSet *)oldGroups toGroups:(NSSet *)groupNames;
+- (void)moveUID:(NSString *)objectUID onAccount:(id)adiumAccount fromGroups:(NSSet *)oldGroups toGroups:(NSSet *)groupNames withAlias:(NSString *)alias;
 {
 	for (NSString *groupName in groupNames) {
 		if (!oldGroups.count) {
 			// If we don't have any source groups, silently turn this into an add.
-			[self addUID:objectUID onAccount:adiumAccount toGroup:groupName];
+			[self addUID:objectUID onAccount:adiumAccount toGroup:groupName withAlias:alias];
 			continue;
 		}
 		
 		for (NSString *sourceGroupName in oldGroups) {
 			// Add the contact to the new group; first so we don't cause a full removal
-			[self addUID:objectUID onAccount:adiumAccount toGroup:groupName];
+			[self addUID:objectUID onAccount:adiumAccount toGroup:groupName withAlias:alias];
 
 			// Remove the contact from the old group.
 			[self removeUID:objectUID onAccount:adiumAccount fromGroup:sourceGroupName];




More information about the commits mailing list