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;