Mercurial > pidgin
comparison libpurple/protocols/myspace/myspace.c @ 24796:c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
This just keeps us from showing their less-than-useful user id.
I really feel like myspace buddy names should be their ID#, and we should
set their server alias to either their user name or their display name.
The way we do it now we have to do a LOT of tricks and callbacks and stuff
to lookup the username before adding users to the buddy list. It just
doesn't seem worth it. The server alias exists for a reason.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Wed, 17 Dec 2008 05:39:11 +0000 |
parents | 5f93e67a8bd7 |
children | a8643ca8d2e0 |
comparison
equal
deleted
inserted
replaced
24795:e12788365764 | 24796:c2054d8d23fc |
---|---|
962 { | 962 { |
963 MsimMessage *contact_info, *user_lookup_info_body; | 963 MsimMessage *contact_info, *user_lookup_info_body; |
964 PurpleGroup *group; | 964 PurpleGroup *group; |
965 PurpleBuddy *buddy; | 965 PurpleBuddy *buddy; |
966 MsimUser *user; | 966 MsimUser *user; |
967 gchar *username, *group_name; | 967 gchar *username, *group_name, *display_name; |
968 guint uid, visibility; | 968 guint uid, visibility; |
969 | 969 |
970 contact_info = (MsimMessage *)data; | 970 contact_info = (MsimMessage *)data; |
971 purple_debug_info("msim_add_contact_from_server_cb", "contact_info addr=%p\n", contact_info); | 971 purple_debug_info("msim_add_contact_from_server_cb", "contact_info addr=%p\n", contact_info); |
972 uid = msim_msg_get_integer(contact_info, "ContactID"); | 972 uid = msim_msg_get_integer(contact_info, "ContactID"); |
973 | 973 |
974 if (!user_lookup_info) { | 974 if (!user_lookup_info) { |
975 username = g_strdup(msim_uid2username_from_blist(session->account, uid)); | 975 username = g_strdup(msim_uid2username_from_blist(session->account, uid)); |
976 display_name = NULL; | |
976 g_return_if_fail(username != NULL); | 977 g_return_if_fail(username != NULL); |
977 } else { | 978 } else { |
978 user_lookup_info_body = msim_msg_get_dictionary(user_lookup_info, "body"); | 979 user_lookup_info_body = msim_msg_get_dictionary(user_lookup_info, "body"); |
979 username = msim_msg_get_string(user_lookup_info_body, "UserName"); | 980 username = msim_msg_get_string(user_lookup_info_body, "UserName"); |
981 display_name = msim_msg_get_string(user_lookup_info_body, "DisplayName"); | |
980 msim_msg_free(user_lookup_info_body); | 982 msim_msg_free(user_lookup_info_body); |
981 g_return_if_fail(username != NULL); | 983 g_return_if_fail(username != NULL); |
982 } | 984 } |
983 | 985 |
984 purple_debug_info("msim_add_contact_from_server_cb", | 986 purple_debug_info("msim_add_contact_from_server_cb", |
1004 if (visibility == 2) { | 1006 if (visibility == 2) { |
1005 /* This buddy is blocked (and therefore not on our buddy list */ | 1007 /* This buddy is blocked (and therefore not on our buddy list */ |
1006 purple_privacy_deny_add(session->account, username, TRUE); | 1008 purple_privacy_deny_add(session->account, username, TRUE); |
1007 msim_msg_free(contact_info); | 1009 msim_msg_free(contact_info); |
1008 g_free(username); | 1010 g_free(username); |
1011 g_free(display_name); | |
1009 return; | 1012 return; |
1010 } | 1013 } |
1011 | 1014 |
1012 /* 2. Get or create buddy */ | 1015 /* 2. Get or create buddy */ |
1013 buddy = purple_find_buddy(session->account, username); | 1016 buddy = purple_find_buddy(session->account, username); |
1017 buddy = purple_buddy_new(session->account, username, NULL); | 1020 buddy = purple_buddy_new(session->account, username, NULL); |
1018 } | 1021 } |
1019 | 1022 |
1020 /* TODO: use 'Position' in contact_info to take into account where buddy is */ | 1023 /* TODO: use 'Position' in contact_info to take into account where buddy is */ |
1021 purple_blist_add_buddy(buddy, NULL, group, NULL /* insertion point */); | 1024 purple_blist_add_buddy(buddy, NULL, group, NULL /* insertion point */); |
1025 | |
1026 if (strtol(username, NULL, 10) == uid) { | |
1027 /* | |
1028 * This user has not set their username! Set their server | |
1029 * alias to their display name so that we don't see a bunch | |
1030 * of numbers in the buddy list. | |
1031 */ | |
1032 if (display_name != NULL) { | |
1033 purple_blist_node_set_string(&buddy->node, "DisplayName", display_name); | |
1034 serv_got_alias(session->gc, username, display_name); | |
1035 } else { | |
1036 serv_got_alias(session->gc, username, | |
1037 purple_blist_node_get_string(&buddy->node, "DisplayName")); | |
1038 } | |
1039 } | |
1040 g_free(display_name); | |
1022 | 1041 |
1023 /* 3. Update buddy information */ | 1042 /* 3. Update buddy information */ |
1024 user = msim_get_user_from_buddy(buddy); | 1043 user = msim_get_user_from_buddy(buddy); |
1025 | 1044 |
1026 user->id = uid; | 1045 user->id = uid; |