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