| 39 **************************************************************************/ |
39 **************************************************************************/ |
| 40 static void |
40 static void |
| 41 msn_accept_add_cb(gpointer data) |
41 msn_accept_add_cb(gpointer data) |
| 42 { |
42 { |
| 43 MsnPermitAdd *pa = data; |
43 MsnPermitAdd *pa = data; |
| 44 MsnSession *session = pa->gc->proto_data; |
44 |
| 45 MsnUserList *userlist = session->userlist; |
|
| 46 MsnUser *user = msn_userlist_find_add_user(userlist, pa->who, pa->who); |
|
| 47 |
|
| 48 purple_debug_misc("MSN Userlist", "Accepted the new buddy: %s\n", pa->who); |
45 purple_debug_misc("MSN Userlist", "Accepted the new buddy: %s\n", pa->who); |
| 49 |
46 |
| 50 msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_AL); |
47 if (PURPLE_CONNECTION_IS_VALID(pa->gc)) |
| 51 |
48 { |
| 52 if (msn_userlist_user_is_in_list(user, MSN_LIST_FL)) { |
49 MsnSession *session = pa->gc->proto_data; |
| 53 msn_del_contact_from_list(session->contact, NULL, pa->who, MSN_LIST_PL); |
50 MsnUserList *userlist = session->userlist; |
| |
51 MsnUser *user = msn_userlist_find_add_user(userlist, pa->who, pa->who); |
| |
52 |
| |
53 |
| |
54 msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_AL); |
| |
55 |
| |
56 if (msn_userlist_user_is_in_list(user, MSN_LIST_FL)) |
| |
57 msn_del_contact_from_list(session->contact, NULL, pa->who, MSN_LIST_PL); |
| 54 } |
58 } |
| 55 |
59 |
| 56 g_free(pa->who); |
60 g_free(pa->who); |
| 57 g_free(pa->friendly); |
61 g_free(pa->friendly); |
| 58 g_free(pa); |
62 g_free(pa); |
| 61 static void |
65 static void |
| 62 msn_cancel_add_cb(gpointer data) |
66 msn_cancel_add_cb(gpointer data) |
| 63 { |
67 { |
| 64 MsnPermitAdd *pa = data; |
68 MsnPermitAdd *pa = data; |
| 65 |
69 |
| 66 purple_debug_misc("MSN Userlist", "Deniedthe new buddy: %s\n", pa->who); |
70 purple_debug_misc("MSN Userlist", "Denied the new buddy: %s\n", pa->who); |
| 67 |
71 |
| 68 if (g_list_find(purple_connections_get_all(), pa->gc) != NULL) |
72 if (PURPLE_CONNECTION_IS_VALID(pa->gc)) |
| 69 { |
73 { |
| 70 MsnSession *session = pa->gc->proto_data; |
74 MsnSession *session = pa->gc->proto_data; |
| 71 MsnUserList *userlist = session->userlist; |
75 MsnUserList *userlist = session->userlist; |
| 72 MsnCallbackState *state = msn_callback_state_new(); |
76 MsnCallbackState *state = msn_callback_state_new(); |
| 73 |
77 |
| 74 msn_callback_state_set_action(state, MSN_DENIED_BUDDY); |
78 msn_callback_state_set_action(state, MSN_DENIED_BUDDY); |
| 75 |
79 |
| 76 msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_BL); |
80 msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_BL); |
| 77 msn_del_contact_from_list(session->contact, state, pa->who, MSN_LIST_PL); |
81 msn_del_contact_from_list(session->contact, state, pa->who, MSN_LIST_PL); |
| 78 } |
82 } |
| 83 } |
87 } |
| 84 |
88 |
| 85 static void |
89 static void |
| 86 got_new_entry(PurpleConnection *gc, const char *passport, const char *friendly) |
90 got_new_entry(PurpleConnection *gc, const char *passport, const char *friendly) |
| 87 { |
91 { |
| |
92 PurpleAccount *acct; |
| 88 MsnPermitAdd *pa; |
93 MsnPermitAdd *pa; |
| 89 |
94 |
| 90 pa = g_new0(MsnPermitAdd, 1); |
95 pa = g_new0(MsnPermitAdd, 1); |
| 91 pa->who = g_strdup(passport); |
96 pa->who = g_strdup(passport); |
| 92 pa->friendly = g_strdup(friendly); |
97 pa->friendly = g_strdup(friendly); |
| 93 pa->gc = gc; |
98 pa->gc = gc; |
| 94 |
99 |
| 95 purple_account_request_authorization(purple_connection_get_account(gc), passport, NULL, friendly, NULL, |
100 acct = purple_connection_get_account(gc); |
| 96 purple_find_buddy(purple_connection_get_account(gc), passport) != NULL, |
101 purple_account_request_authorization(acct, passport, NULL, friendly, NULL, |
| 97 msn_accept_add_cb, msn_cancel_add_cb, pa); |
102 purple_find_buddy(acct, passport) != NULL, |
| |
103 msn_accept_add_cb, msn_cancel_add_cb, pa); |
| 98 |
104 |
| 99 } |
105 } |
| 100 |
106 |
| 101 /************************************************************************** |
107 /************************************************************************** |
| 102 * Utility functions |
108 * Utility functions |