diff libpurple/protocols/mxit/mxit.c @ 31299:8cddae054791

Only MXit users have profiles, so display a better message when "Get Info" is selected for non-users. Pidgin unfortunately still pops up the "Buddy Information" notification window.
author andrew.victor@mxit.com
date Fri, 04 Feb 2011 09:51:05 +0000
parents 02b510d2d014
children 7c33eaed54e5
line wrap: on
line diff
--- a/libpurple/protocols/mxit/mxit.c	Fri Feb 04 09:13:46 2011 +0000
+++ b/libpurple/protocols/mxit/mxit.c	Fri Feb 04 09:51:05 2011 +0000
@@ -560,6 +560,8 @@
  */
 static void mxit_get_info( PurpleConnection *gc, const char *who )
 {
+	PurpleBuddy*			buddy;
+	struct contact*			contact;
 	struct MXitSession*		session			= (struct MXitSession*) gc->proto_data;
 	const char*				profilelist[]	= { CP_PROFILE_BIRTHDATE, CP_PROFILE_GENDER, CP_PROFILE_FULLNAME,
 												CP_PROFILE_FIRSTNAME, CP_PROFILE_LASTNAME, CP_PROFILE_REGCOUNTRY, CP_PROFILE_LASTSEEN,
@@ -567,6 +569,22 @@
 
 	purple_debug_info( MXIT_PLUGIN_ID, "mxit_get_info: '%s'\n", who );
 
+	/* find the buddy information for this contact (reference: "libpurple/blist.h") */
+	buddy = purple_find_buddy( session->acc, who );
+	if ( !buddy ) {
+		purple_debug_warning( MXIT_PLUGIN_ID, "mxit_get_info: unable to find the buddy '%s'\n", who );
+		return;
+	}
+
+	contact = purple_buddy_get_protocol_data( buddy );
+	if ( !contact )
+		return;
+
+	/* only MXit users have profiles */
+	if ( contact->type != MXIT_TYPE_MXIT ) {
+		mxit_popup( PURPLE_NOTIFY_MSG_WARNING, _( "No profile available" ), _( "This contact does not have a profile." ) );
+		return;
+	}
 
 	/* send profile request */
 	mxit_send_extprofile_request( session, who, ARRAY_SIZE( profilelist ), profilelist );