comparison libpurple/protocols/msn/contact.c @ 20774:d1e8f4d63f01

merge of '701fb7aea7a77b05725227038ec645441c76668c' and '82ae4511a5006e8f04cd58e034b718deba69321a'
author Carlos Silva <typ0@pidgin.im>
date Thu, 04 Oct 2007 02:42:15 +0000
parents 48ee7ec3426d dcb28d9939ee
children c40416c4eca6 6736c1168c50 e64e6fbd1351
comparison
equal deleted inserted replaced
20769:712020cd7c8e 20774:d1e8f4d63f01
1022 msn_notification_send_fqy(soapconn->session, state->who); 1022 msn_notification_send_fqy(soapconn->session, state->who);
1023 1023
1024 user = msn_userlist_find_add_user(userlist, state->who, state->who); 1024 user = msn_userlist_find_add_user(userlist, state->who, state->who);
1025 msn_user_add_group_id(user, state->guid); 1025 msn_user_add_group_id(user, state->guid);
1026 1026
1027 if (msn_userlist_user_is_in_list(user, MSN_LIST_PL)) { 1027 msn_soap_free_read_buf(soapconn);
1028 msn_del_contact_from_list(soapconn->session->contact, NULL, state->who, MSN_LIST_PL);
1029 } else {
1030 msn_soap_free_read_buf(soapconn);
1031 }
1032
1033 msn_callback_state_free(state); 1028 msn_callback_state_free(state);
1034 1029
1035 return TRUE; 1030 return TRUE;
1036 } 1031 }
1037 1032
1109 } else { 1104 } else {
1110 purple_debug_info("MSNCL","Contact %s added to group %s successfully on server, but failed in the local list\n", state->who, state->new_group_name); 1105 purple_debug_info("MSNCL","Contact %s added to group %s successfully on server, but failed in the local list\n", state->who, state->new_group_name);
1111 } 1106 }
1112 1107
1113 if (state->action & MSN_ADD_BUDDY) { 1108 if (state->action & MSN_ADD_BUDDY) {
1114 MsnUser *user = msn_userlist_find_user(userlist, state->who);
1115 1109
1116 if ( !msn_user_is_yahoo(soapconn->session->account, state->who) ) { 1110 if ( !msn_user_is_yahoo(soapconn->session->account, state->who) ) {
1117 1111
1118 msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_AL); 1112 msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_AL);
1119 msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_FL); 1113 msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_FL);
1120 } 1114 }
1121 msn_notification_send_fqy(soapconn->session, state->who); 1115 msn_notification_send_fqy(soapconn->session, state->who);
1122
1123 if (msn_userlist_user_is_in_list(user, MSN_LIST_PL)) {
1124 msn_del_contact_from_list(soapconn->session->contact, NULL, state->who, MSN_LIST_PL);
1125 msn_callback_state_free(state);
1126 return TRUE;
1127 }
1128 } 1116 }
1129 1117
1130 if (state->action & MSN_MOVE_BUDDY) { 1118 if (state->action & MSN_MOVE_BUDDY) {
1131 msn_del_contact_from_group(soapconn->session->contact, state->who, state->old_group_name); 1119 msn_del_contact_from_group(soapconn->session->contact, state->who, state->old_group_name);
1132 } else { 1120 } else {
1435 MsnCallbackState *state = NULL; 1423 MsnCallbackState *state = NULL;
1436 1424
1437 g_return_val_if_fail(soapconn->data_cb != NULL, TRUE); 1425 g_return_val_if_fail(soapconn->data_cb != NULL, TRUE);
1438 g_return_val_if_fail(soapconn->session != NULL, FALSE); 1426 g_return_val_if_fail(soapconn->session != NULL, FALSE);
1439 g_return_val_if_fail(soapconn->session->contact != NULL, FALSE); 1427 g_return_val_if_fail(soapconn->session->contact != NULL, FALSE);
1428 g_return_val_if_fail(soapconn->session->userlist != NULL, FALSE);
1440 1429
1441 state = (MsnCallbackState *) soapconn->data_cb; 1430 state = (MsnCallbackState *) soapconn->data_cb;
1442 1431
1443 if (soapconn->body == NULL) { 1432 if (soapconn->body == NULL) {
1444 msn_callback_state_free(state); 1433 msn_callback_state_free(state);
1446 } 1435 }
1447 1436
1448 purple_debug_info("MSN CL", "Contact %s deleted successfully from %s list on server!\n", state->who, MsnMemberRole[state->list_id]); 1437 purple_debug_info("MSN CL", "Contact %s deleted successfully from %s list on server!\n", state->who, MsnMemberRole[state->list_id]);
1449 1438
1450 if (state->list_id == MSN_LIST_PL) { 1439 if (state->list_id == MSN_LIST_PL) {
1440 MsnUser *user = msn_userlist_find_user(soapconn->session->userlist, state->who);
1441
1442 if (user != NULL)
1443 msn_user_unset_op(user, MSN_LIST_PL_OP);
1444
1451 msn_add_contact_to_list(soapconn->session->contact, state, state->who, MSN_LIST_RL); 1445 msn_add_contact_to_list(soapconn->session->contact, state, state->who, MSN_LIST_RL);
1452 return TRUE; 1446 return TRUE;
1453 } 1447 }
1454 1448
1455 if (state->list_id == MSN_LIST_AL) { 1449 if (state->list_id == MSN_LIST_AL) {
1539 msn_add_contact_to_list_read_cb(MsnSoapConn *soapconn) 1533 msn_add_contact_to_list_read_cb(MsnSoapConn *soapconn)
1540 { 1534 {
1541 MsnCallbackState *state = NULL; 1535 MsnCallbackState *state = NULL;
1542 1536
1543 g_return_val_if_fail(soapconn->data_cb != NULL, TRUE); 1537 g_return_val_if_fail(soapconn->data_cb != NULL, TRUE);
1538 g_return_val_if_fail(soapconn->session != NULL, FALSE);
1539 g_return_val_if_fail(soapconn->session->userlist != NULL, FALSE);
1544 1540
1545 state = (MsnCallbackState *) soapconn->data_cb; 1541 state = (MsnCallbackState *) soapconn->data_cb;
1546 1542
1547 if (soapconn->body == NULL) { 1543 if (soapconn->body == NULL) {
1548 msn_callback_state_free(state); 1544 msn_callback_state_free(state);
1549 return TRUE; 1545 return TRUE;
1550 } 1546 }
1551 1547
1552 purple_debug_info("MSN CL", "Contact %s added successfully to %s list on server!\n", state->who, MsnMemberRole[state->list_id]); 1548 purple_debug_info("MSN CL", "Contact %s added successfully to %s list on server!\n", state->who, MsnMemberRole[state->list_id]);
1553 1549
1554 if (state->list_id == MSN_LIST_RL && (state->action & MSN_DENIED_BUDDY) ) { 1550 if (state->list_id == MSN_LIST_RL) {
1555 g_return_val_if_fail(soapconn->session != NULL, FALSE); 1551 MsnUser *user = msn_userlist_find_user(soapconn->session->userlist, state->who);
1556 g_return_val_if_fail(soapconn->session->contact != NULL, FALSE); 1552
1557 1553 if (user != NULL) {
1558 msn_add_contact_to_list(soapconn->session->contact, NULL, state->who, MSN_LIST_BL); 1554 msn_user_set_op(user, MSN_LIST_RL_OP);
1559 return TRUE; 1555 }
1556
1557 if (state->action & MSN_DENIED_BUDDY) {
1558 g_return_val_if_fail(soapconn->session->contact != NULL, FALSE);
1559
1560 msn_add_contact_to_list(soapconn->session->contact, NULL, state->who, MSN_LIST_BL);
1561 return TRUE;
1562 }
1560 } 1563 }
1561 1564
1562 if (state->list_id == MSN_LIST_AL) { 1565 if (state->list_id == MSN_LIST_AL) {
1563 purple_privacy_permit_add(soapconn->session->account, state->who, TRUE); 1566 purple_privacy_permit_add(soapconn->session->account, state->who, TRUE);
1564 } else if (state->list_id == MSN_LIST_BL) { 1567 } else if (state->list_id == MSN_LIST_BL) {