Mercurial > pidgin
changeset 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 | e12788365764 |
children | 9216da5184a2 9100b9176a16 |
files | libpurple/protocols/myspace/myspace.c |
diffstat | 1 files changed, 20 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/myspace/myspace.c Wed Dec 17 04:37:21 2008 +0000 +++ b/libpurple/protocols/myspace/myspace.c Wed Dec 17 05:39:11 2008 +0000 @@ -964,7 +964,7 @@ PurpleGroup *group; PurpleBuddy *buddy; MsimUser *user; - gchar *username, *group_name; + gchar *username, *group_name, *display_name; guint uid, visibility; contact_info = (MsimMessage *)data; @@ -973,10 +973,12 @@ if (!user_lookup_info) { username = g_strdup(msim_uid2username_from_blist(session->account, uid)); + display_name = NULL; g_return_if_fail(username != NULL); } else { user_lookup_info_body = msim_msg_get_dictionary(user_lookup_info, "body"); username = msim_msg_get_string(user_lookup_info_body, "UserName"); + display_name = msim_msg_get_string(user_lookup_info_body, "DisplayName"); msim_msg_free(user_lookup_info_body); g_return_if_fail(username != NULL); } @@ -1006,6 +1008,7 @@ purple_privacy_deny_add(session->account, username, TRUE); msim_msg_free(contact_info); g_free(username); + g_free(display_name); return; } @@ -1020,6 +1023,22 @@ /* TODO: use 'Position' in contact_info to take into account where buddy is */ purple_blist_add_buddy(buddy, NULL, group, NULL /* insertion point */); + if (strtol(username, NULL, 10) == uid) { + /* + * This user has not set their username! Set their server + * alias to their display name so that we don't see a bunch + * of numbers in the buddy list. + */ + if (display_name != NULL) { + purple_blist_node_set_string(&buddy->node, "DisplayName", display_name); + serv_got_alias(session->gc, username, display_name); + } else { + serv_got_alias(session->gc, username, + purple_blist_node_get_string(&buddy->node, "DisplayName")); + } + } + g_free(display_name); + /* 3. Update buddy information */ user = msim_get_user_from_buddy(buddy);