diff libpurple/protocols/myspace/myspace.c @ 24632:128a77f3b3c4

Keep track of the user ID in the MsimUser struct so that we have a copy even for people who aren't in our buddy list. This fixes the "View web profile" link when getting info for people not in our buddy list.
author Mark Doliner <mark@kingant.net>
date Fri, 12 Dec 2008 04:01:39 +0000
parents 1af3baa61c9f
children c1c464583f8c 1260a3fb60f4 68f4edb42f39
line wrap: on
line diff
--- a/libpurple/protocols/myspace/myspace.c	Fri Dec 12 03:46:36 2008 +0000
+++ b/libpurple/protocols/myspace/myspace.c	Fri Dec 12 04:01:39 2008 +0000
@@ -1018,7 +1018,6 @@
 {
 	MsimSession *session;
 	MsimUser *user;
-	guint uid;
 	gchar *user_to_lookup;
 	MsimMessage *user_msg;
 
@@ -1033,8 +1032,8 @@
 	user = msim_find_user(session, username);
 
 	/* If is on buddy list, lookup by uid since it is faster. */
-	if (user && (uid = purple_blist_node_get_int(&user->buddy->node, "UserID"))) {
-		user_to_lookup = g_strdup_printf("%d", uid);
+	if (user && user->id) {
+		user_to_lookup = g_strdup_printf("%d", user->id);
 	} else {
 		/* Looking up buddy not on blist. Lookup by whatever user entered. */
 		user_to_lookup = g_strdup(username);
@@ -1970,10 +1969,11 @@
 		purple_blist_add_buddy(buddy, NULL, NULL, NULL);
 
 		user = msim_get_user_from_buddy(buddy);
-
-		/* All buddies on list should have a UserID integer associated with them. */
-		purple_blist_node_set_int(&buddy->node, "UserID", msim_msg_get_integer(msg, "f"));
-		
+		user->id = msim_msg_get_integer(msg, "f");
+
+		/* Keep track of the user ID across sessions */
+		purple_blist_node_set_int(&buddy->node, "UserID", user->id);
+
 		msim_store_user_info(session, msg, NULL);
 	} else {
 		purple_debug_info("msim", "msim_status: found buddy %s\n", username);
@@ -2866,7 +2866,8 @@
 	/* 3. Update buddy information */
 	user = msim_get_user_from_buddy(buddy);
 
-	/* All buddies on list should have 'uid' integer associated with them. */
+	user->id = uid;
+	/* Keep track of the user ID across sessions */
 	purple_blist_node_set_int(&buddy->node, "UserID", uid);
 
 	/* Stores a few fields in the MsimUser, relevant to the buddy itself.