Mercurial > pidgin.yaz
comparison src/protocols/msn/notification.c @ 6767:926d539938ca
[gaim-migrate @ 7304]
MSN server-side buddy list now overrides local buddy list. This will most
likely result in misplaced buddies, but fixes several problems. I'm sure
the "My MSN buddies moved to a new group!!" bug reports are going to be
common.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sun, 07 Sep 2003 01:06:09 +0000 |
parents | b7e113a59b51 |
children | e719379c8a79 |
comparison
equal
deleted
inserted
replaced
6766:af326d63ef71 | 6767:926d539938ca |
---|---|
36 static GHashTable *notification_msg_types = NULL; | 36 static GHashTable *notification_msg_types = NULL; |
37 | 37 |
38 /************************************************************************** | 38 /************************************************************************** |
39 * Utility functions | 39 * Utility functions |
40 **************************************************************************/ | 40 **************************************************************************/ |
41 static void | |
42 sync_groups_for_buddy(MsnServConn *servconn, MsnUser *user) | |
43 { | |
44 } | |
45 | |
41 static gboolean | 46 static gboolean |
42 add_buddy(MsnServConn *servconn, MsnUser *user) | 47 add_buddy(MsnServConn *servconn, MsnUser *user) |
43 { | 48 { |
44 MsnSession *session = servconn->session; | 49 MsnSession *session = servconn->session; |
45 GaimAccount *account = session->account; | 50 GaimAccount *account = session->account; |
46 GaimConnection *gc = gaim_account_get_connection(account); | 51 GaimConnection *gc = gaim_account_get_connection(account); |
47 GaimBuddy *b; | 52 GaimBuddy *b; |
48 MsnGroup *group = NULL; | 53 MsnGroup *group = NULL; |
49 GaimGroup *g = NULL; | 54 GaimGroup *g = NULL; |
50 GList *l, *l2; | 55 GList *l, *l2; |
56 GSList *sl; | |
51 GSList *buddies; | 57 GSList *buddies; |
52 | 58 |
53 buddies = gaim_find_buddies(account, msn_user_get_passport(user)); | 59 buddies = gaim_find_buddies(account, msn_user_get_passport(user)); |
54 | 60 |
55 for (l = msn_user_get_group_ids(user); l != NULL; l = l->next) | 61 for (l = msn_user_get_group_ids(user); l != NULL; l = l->next) |
56 { | 62 { |
57 int group_id = GPOINTER_TO_INT(l->data); | 63 int group_id = GPOINTER_TO_INT(l->data); |
58 GSList *l3; | |
59 | 64 |
60 if (group_id > -1) | 65 if (group_id > -1) |
61 group = msn_groups_find_with_id(session->groups, group_id); | 66 group = msn_groups_find_with_id(session->groups, group_id); |
62 | 67 |
63 if (group == NULL) | 68 if (group == NULL) |
89 if (group != NULL) | 94 if (group != NULL) |
90 msn_group_add_user(group, user); | 95 msn_group_add_user(group, user); |
91 | 96 |
92 b = NULL; | 97 b = NULL; |
93 | 98 |
94 for (l3 = buddies; l3 != NULL; l3 = l3->next) | 99 for (sl = buddies; sl != NULL; sl = sl->next) |
95 { | 100 { |
96 b = (GaimBuddy *)l3->data; | 101 b = (GaimBuddy *)sl->data; |
97 | 102 |
98 if (gaim_find_buddys_group(b) == g) | 103 if (gaim_find_buddys_group(b) == g) |
99 break; | 104 break; |
100 | 105 |
101 b = NULL; | 106 b = NULL; |
107 msn_user_get_passport(user), NULL); | 112 msn_user_get_passport(user), NULL); |
108 | 113 |
109 gaim_blist_add_buddy(b, NULL, g, NULL); | 114 gaim_blist_add_buddy(b, NULL, g, NULL); |
110 } | 115 } |
111 | 116 |
112 gaim_debug(GAIM_DEBUG_INFO, "msn", | |
113 "Adding MsnUser to %s's proto_data (group %d, %s)\n", | |
114 b->name, group_id, (g == NULL ? "(null)" : g->name)); | |
115 | |
116 b->proto_data = user; | 117 b->proto_data = user; |
118 } | |
119 | |
120 /* Find all occurrences of this buddy in the wrong place. */ | |
121 for (sl = buddies; sl != NULL; sl = sl->next) | |
122 { | |
123 b = sl->data; | |
124 | |
125 if (b->proto_data == NULL) | |
126 { | |
127 gaim_debug_warning("msn", | |
128 "Deleting misplaced user %s (%s) during sync with server.\n", | |
129 b->name, gaim_find_buddys_group(b)->name); | |
130 | |
131 gaim_blist_remove_buddy(b); | |
132 } | |
117 } | 133 } |
118 | 134 |
119 g_slist_free(buddies); | 135 g_slist_free(buddies); |
120 | 136 |
121 serv_got_alias(gc, (char *)msn_user_get_passport(user), | 137 serv_got_alias(gc, (char *)msn_user_get_passport(user), |
1144 | 1160 |
1145 user = msn_user_new(session, passport, friend); | 1161 user = msn_user_new(session, passport, friend); |
1146 | 1162 |
1147 tokens = g_strsplit(group_nums, ",", -1); | 1163 tokens = g_strsplit(group_nums, ",", -1); |
1148 | 1164 |
1149 gaim_debug(GAIM_DEBUG_MISC, "msn", | 1165 gaim_debug_misc("msn", "Fetching group IDs from '%s'\n", |
1150 "Fetching group IDs from '%s'\n", group_nums); | 1166 group_nums); |
1151 for (c = tokens; *c != NULL; c++) | 1167 for (c = tokens; *c != NULL; c++) |
1152 { | 1168 { |
1153 gaim_debug(GAIM_DEBUG_MISC, "msn", | 1169 gaim_debug_misc("msn", "Appending group ID %d\n", atoi(*c)); |
1154 "Appending group ID %d\n", atoi(*c)); | |
1155 msn_user_add_group_id(user, atoi(*c)); | 1170 msn_user_add_group_id(user, atoi(*c)); |
1156 } | 1171 } |
1157 | 1172 |
1158 g_strfreev(tokens); | 1173 g_strfreev(tokens); |
1159 | 1174 |