diff libpurple/protocols/msn/msn.c @ 20486:ff4ae9dde291

Make block/unblock work right, as well as being add by a buddy. Finally fixes #723
author Carlos Silva <typ0@pidgin.im>
date Mon, 03 Sep 2007 05:47:52 +0000
parents 98613886411a
children 64c322c3b1b0
line wrap: on
line diff
--- a/libpurple/protocols/msn/msn.c	Fri Aug 31 18:15:23 2007 +0000
+++ b/libpurple/protocols/msn/msn.c	Mon Sep 03 05:47:52 2007 +0000
@@ -1162,12 +1162,22 @@
 	userlist = session->userlist;
 	user = msn_userlist_find_user(userlist, who);
 
+	purple_debug_info("MSN", "msn_add_permit()\n");
+
 	if (!session->logged_in)
 		return;
 
-	if (user != NULL && user->list_op & MSN_LIST_BL_OP)
+	if (user != NULL && user->list_op & MSN_LIST_BL_OP) {
 		msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL);
 
+		/* delete contact from Block list and add it to Allow in the callback */
+		msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL);
+	} else {
+		/* just add the contact to Allow list */
+		msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_AL);
+	}
+
+
 	msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_AL);
 }
 
@@ -1182,12 +1192,21 @@
 	userlist = session->userlist;
 	user = msn_userlist_find_user(userlist, who);
 
+	purple_debug_info("MSN", "msn_add_deny()\n");
+	
 	if (!session->logged_in)
 		return;
 
-	if (user != NULL && user->list_op & MSN_LIST_AL_OP)
+	if (user != NULL && user->list_op & MSN_LIST_AL_OP) {
 		msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL);
 
+		/* delete contact from Allow list and add it to Block in the callback */
+		msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL);
+	} else {
+		/* just add the contact to Block list */
+		msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_BL);
+	}
+
 	msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL);
 }
 
@@ -1201,6 +1220,8 @@
 	session = gc->proto_data;
 	userlist = session->userlist;
 
+	purple_debug_info("MSN", "msn_rem_permit()\n");
+
 	if (!session->logged_in)
 		return;
 
@@ -1208,6 +1229,8 @@
 
 	msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL);
 
+	msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL);
+
 	if (user != NULL && user->list_op & MSN_LIST_RL_OP)
 		msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL);
 }
@@ -1222,6 +1245,8 @@
 	session = gc->proto_data;
 	userlist = session->userlist;
 
+	purple_debug_info("MSN", "msn_rem_deny()\n");
+
 	if (!session->logged_in)
 		return;
 
@@ -1229,6 +1254,8 @@
 
 	msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL);
 
+	msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL);
+
 	if (user != NULL && user->list_op & MSN_LIST_RL_OP)
 		msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_AL);
 }