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