Mercurial > pidgin
comparison libpurple/protocols/msn/userlist.c @ 25237:401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
to branch 'org.darkrain42.pidgin.buddy-add' (head 6831808999a270f8c1a128c7430a73d3dc0bfae2)
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 21 Dec 2008 18:32:37 +0000 |
parents | f3950234b164 |
children | fd5eedf131b4 ca01403251f1 |
comparison
equal
deleted
inserted
replaced
25172:125cac3e24ee | 25237:401f548e3544 |
---|---|
182 | 182 |
183 if (group_id != NULL) | 183 if (group_id != NULL) |
184 { | 184 { |
185 msn_user_add_group_id(user, group_id); | 185 msn_user_add_group_id(user, group_id); |
186 } | 186 } |
187 else | |
188 { | |
189 /* session->sync->fl_users_count++; */ | |
190 } | |
191 } | 187 } |
192 else if (list_id == MSN_LIST_AL) | 188 else if (list_id == MSN_LIST_AL) |
193 { | 189 { |
194 purple_privacy_permit_add(account, passport, TRUE); | 190 purple_privacy_permit_add(account, passport, TRUE); |
195 } | 191 } |
250 /* TODO: When is the user totally removed? */ | 246 /* TODO: When is the user totally removed? */ |
251 if (group_id != NULL) | 247 if (group_id != NULL) |
252 { | 248 { |
253 msn_user_remove_group_id(user, group_id); | 249 msn_user_remove_group_id(user, group_id); |
254 return; | 250 return; |
255 } | |
256 else | |
257 { | |
258 /* session->sync->fl_users_count--; */ | |
259 } | 251 } |
260 } | 252 } |
261 else if (list_id == MSN_LIST_AL) | 253 else if (list_id == MSN_LIST_AL) |
262 { | 254 { |
263 purple_privacy_permit_remove(account, passport, TRUE); | 255 purple_privacy_permit_remove(account, passport, TRUE); |
674 return; | 666 return; |
675 } | 667 } |
676 | 668 |
677 msn_user_unset_op(user, list_op); | 669 msn_user_unset_op(user, list_op); |
678 | 670 |
679 msn_notification_rem_buddy_from_list(userlist->session->notification, list_id, who); | 671 msn_notification_rem_buddy_from_list(userlist->session->notification, list_id, user); |
680 } | 672 } |
681 | 673 |
682 /*add buddy*/ | 674 /*add buddy*/ |
683 void | 675 void |
684 msn_userlist_add_buddy(MsnUserList *userlist, const char *who, const char *group_name) | 676 msn_userlist_add_buddy(MsnUserList *userlist, const char *who, const char *group_name) |
754 /* Add contact in the Contact server with a SOAP request and if | 746 /* Add contact in the Contact server with a SOAP request and if |
755 successful, send ADL with MSN_LIST_AL and MSN_LIST_FL and a FQY */ | 747 successful, send ADL with MSN_LIST_AL and MSN_LIST_FL and a FQY */ |
756 msn_add_contact_to_group(userlist->session, state, who, group_id); | 748 msn_add_contact_to_group(userlist->session, state, who, group_id); |
757 } | 749 } |
758 | 750 |
751 /* | |
752 * Save a buddy address/group until we get back response from FQY | |
753 */ | |
754 void | |
755 msn_userlist_save_pending_buddy(MsnUserList *userlist, | |
756 const char *who, | |
757 const char *group_name) | |
758 { | |
759 MsnUser *user; | |
760 | |
761 g_return_if_fail(userlist != NULL); | |
762 | |
763 user = msn_user_new(userlist, who, NULL); | |
764 msn_user_set_pending_group(user, group_name); | |
765 msn_user_set_network(user, MSN_NETWORK_UNKNOWN); | |
766 userlist->pending = g_list_prepend(userlist->pending, user); | |
767 } | |
768 | |
769 /* | |
770 * Actually adds a buddy once we have the response from FQY | |
771 */ | |
772 void | |
773 msn_userlist_add_pending_buddy(MsnUserList *userlist, | |
774 const char *who, | |
775 /*MsnNetwork*/ int network) | |
776 { | |
777 MsnUser *user = NULL; | |
778 MsnUser *user2; | |
779 GList *l; | |
780 char *group; | |
781 | |
782 for (l = userlist->pending; l != NULL; l = l->next) | |
783 { | |
784 user = (MsnUser *)l->data; | |
785 | |
786 if (!g_strcasecmp(who, user->passport)) { | |
787 userlist->pending = g_list_delete_link(userlist->pending, l); | |
788 break; | |
789 } | |
790 } | |
791 | |
792 if (user == NULL) { | |
793 purple_debug_error("msn", "Attempting to add a pending user that does not exist.\n"); | |
794 return; | |
795 } | |
796 | |
797 group = msn_user_remove_pending_group(user); | |
798 | |
799 user2 = msn_userlist_find_user(userlist, who); | |
800 if (user2 != NULL) { | |
801 /* User already in userlist, so just update it. */ | |
802 msn_user_destroy(user); | |
803 user = user2; | |
804 } else { | |
805 msn_userlist_add_user(userlist, user); | |
806 } | |
807 | |
808 msn_user_set_network(user, network); | |
809 msn_userlist_add_buddy(userlist, who, group); | |
810 g_free(group); | |
811 } | |
812 | |
759 void | 813 void |
760 msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who, | 814 msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who, |
761 MsnListId list_id) | 815 MsnListId list_id) |
762 { | 816 { |
763 MsnUser *user = NULL; | 817 MsnUser *user = NULL; |
779 /* XXX: see XXX above, this should really be done when we get the response from | 833 /* XXX: see XXX above, this should really be done when we get the response from |
780 the server */ | 834 the server */ |
781 | 835 |
782 msn_user_set_op(user, list_op); | 836 msn_user_set_op(user, list_op); |
783 | 837 |
784 msn_notification_add_buddy_to_list(userlist->session->notification, list_id, who); | 838 msn_notification_add_buddy_to_list(userlist->session->notification, list_id, user); |
785 } | 839 } |
786 | 840 |
787 gboolean | 841 gboolean |
788 msn_userlist_add_buddy_to_group(MsnUserList *userlist, const char *who, | 842 msn_userlist_add_buddy_to_group(MsnUserList *userlist, const char *who, |
789 const char *group_name) | 843 const char *group_name) |