| 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) |
| 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 |