diff libpurple/protocols/qq/qq.c @ 24142:df699d739b8f

2008.10.03 - ccpaging <ccpaging(at)gmail.com> * 2007 protocol: 1. fixed 'get room info' 2. fixed 'get buddy level'
author SHiNE CsyFeK <csyfek@gmail.com>
date Wed, 22 Oct 2008 14:46:44 +0000
parents 619ac2303c46
children c2253c485728
line wrap: on
line diff
--- a/libpurple/protocols/qq/qq.c	Wed Oct 22 14:45:26 2008 +0000
+++ b/libpurple/protocols/qq/qq.c	Wed Oct 22 14:46:44 2008 +0000
@@ -499,7 +499,11 @@
 		return;
 	}
 
-	qq_request_get_level(gc, uid);
+	if (qd->client_version >= 2007) {
+		qq_request_get_level_2007(gc, uid);
+	} else {
+		qq_request_get_level(gc, uid);
+	}
 	qq_request_buddy_info(gc, uid, 0, QQ_BUDDY_INFO_DISPLAY);
 }
 
@@ -773,12 +777,31 @@
 /* who is the nickname of buddy in QQ chat-room (Qun) */
 static void qq_get_chat_buddy_info(PurpleConnection *gc, gint channel, const gchar *who)
 {
-	gchar *purple_name;
+	qq_data *qd;
+	gchar *uid_str;
+	guint32 uid;
+
 	g_return_if_fail(who != NULL);
 
-	purple_name = chat_name_to_purple_name(who);
-	if (purple_name != NULL)
-		qq_show_buddy_info(gc, purple_name);
+	uid_str = chat_name_to_purple_name(who);
+	if (uid_str == NULL) {
+		return;
+	}
+
+	qd = gc->proto_data;
+	uid = purple_name_to_uid(uid_str);
+	g_free(uid_str);
+
+	if (uid <= 0) {
+		purple_debug_error("QQ", "Not valid chat name: %s\n", who);
+		purple_notify_error(gc, NULL, _("Invalid name"), NULL);
+		return;
+	}
+
+	if (qd->client_version < 2007) {
+		qq_request_get_level(gc, uid);
+	}
+	qq_request_buddy_info(gc, uid, 0, QQ_BUDDY_INFO_DISPLAY);
 }
 
 /* convert chat nickname to uid to invite individual IM to buddy */