changeset 24206:f54e7398f733

Use the MSN passport in more places instead of the Contact ID if it's not available. References #7274.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Thu, 02 Oct 2008 04:52:38 +0000
parents 9340e1db0f46
children 89cb9c0f5bd9
files libpurple/protocols/msn/contact.c libpurple/protocols/msn/contact.h libpurple/protocols/msn/userlist.c
diffstat 3 files changed, 15 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/msn/contact.c	Tue Sep 30 00:49:53 2008 +0000
+++ b/libpurple/protocols/msn/contact.c	Thu Oct 02 04:52:38 2008 +0000
@@ -1111,20 +1111,24 @@
 
 /*delete a Contact*/
 void
-msn_delete_contact(MsnSession *session, const char *contactId)
+msn_delete_contact(MsnSession *session, MsnUser *user)
 {
 	gchar *body = NULL;
 	gchar *contact_id_xml = NULL ;
 	MsnCallbackState *state;
 
-	g_return_if_fail(contactId != NULL);
-	contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, contactId);
+	if (user->uid != NULL) {
+		contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid);
+		purple_debug_info("msn", "Deleting contact with contactId: %s\n", user->uid);
+	} else {
+		contact_id_xml = g_strdup_printf(MSN_CONTACT_XML, user->passport);
+		purple_debug_info("msn", "Deleting contact with passport: %s\n", user->passport);
+	}
 
 	state = msn_callback_state_new(session);
-	msn_callback_state_set_uid(state, contactId);
+	msn_callback_state_set_uid(state, user->uid);
 
 	/* build SOAP request */
-	purple_debug_info("msn", "Deleting contact with contactId: %s\n", contactId);
 	body = g_strdup_printf(MSN_DEL_CONTACT_TEMPLATE, contact_id_xml);
 
 	state->body = xmlnode_from_str(body, -1);
@@ -1191,7 +1195,10 @@
 	msn_callback_state_set_guid(state, groupId);
 	msn_callback_state_set_old_group_name(state, group_name);
 
-	contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid);
+	if (user->uid != NULL)
+		contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid);
+	else
+		contact_id_xml = g_strdup_printf(MSN_CONTACT_XML, passport);
 	body = g_strdup_printf(MSN_CONTACT_DEL_GROUP_TEMPLATE, contact_id_xml, groupId);
 
 	state->body = xmlnode_from_str(body, -1);
--- a/libpurple/protocols/msn/contact.h	Tue Sep 30 00:49:53 2008 +0000
+++ b/libpurple/protocols/msn/contact.h	Thu Oct 02 04:52:38 2008 +0000
@@ -654,7 +654,7 @@
 
 void msn_add_contact(MsnSession *session, MsnCallbackState *state,
 		     const char *passport);
-void msn_delete_contact(MsnSession *session, const char *contactId);
+void msn_delete_contact(MsnSession *session, MsnUser *user);
 
 void msn_add_contact_to_group(MsnSession *session, MsnCallbackState *state,
 			      const char *passport, const char *groupId);
--- a/libpurple/protocols/msn/userlist.c	Tue Sep 30 00:49:53 2008 +0000
+++ b/libpurple/protocols/msn/userlist.c	Thu Oct 02 04:52:38 2008 +0000
@@ -652,7 +652,7 @@
 				NULL, ab,
 				G_CALLBACK(userlist_ab_delete_cb), G_CALLBACK(userlist_ab_delete_cb));
 		} else
-			msn_delete_contact(userlist->session, user->uid);
+			msn_delete_contact(userlist->session, user);
 	}
 }