Mercurial > pidgin.yaz
comparison src/protocols/msn/notification.c @ 5457:c8c290021b7b
[gaim-migrate @ 5845]
Okay, now it's fixed. Everybody gets an MsnUser. Yay!
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Tue, 20 May 2003 04:38:40 +0000 |
parents | 40e976d42028 |
children | 175de59cd1c5 |
comparison
equal
deleted
inserted
replaced
5456:40e976d42028 | 5457:c8c290021b7b |
---|---|
35 static GHashTable *notification_commands = NULL; | 35 static GHashTable *notification_commands = NULL; |
36 static GHashTable *notification_msg_types = NULL; | 36 static GHashTable *notification_msg_types = NULL; |
37 G_MODULE_IMPORT GSList *connections; | 37 G_MODULE_IMPORT GSList *connections; |
38 | 38 |
39 /************************************************************************** | 39 /************************************************************************** |
40 * Utility functions | |
41 **************************************************************************/ | |
42 static gboolean | |
43 __add_buddy(MsnServConn *servconn, MsnUser *user) | |
44 { | |
45 MsnSession *session = servconn->session; | |
46 struct gaim_connection *gc = session->account->gc; | |
47 struct buddy *b; | |
48 | |
49 b = gaim_find_buddy(gc->account, msn_user_get_passport(user)); | |
50 | |
51 if (b == NULL) { | |
52 struct group *g = NULL; | |
53 const char *group_name = NULL; | |
54 int group_id; | |
55 | |
56 group_id = msn_user_get_group_id(user); | |
57 | |
58 if (group_id > -1) { | |
59 group_name = g_hash_table_lookup(session->group_names, | |
60 &group_id); | |
61 } | |
62 | |
63 if (group_name == NULL) { | |
64 gaim_debug(GAIM_DEBUG_WARNING, "msn", | |
65 "Group ID %d for user %s was not defined.\n", | |
66 group_id, msn_user_get_passport(user)); | |
67 } | |
68 else if ((g = gaim_find_group(group_name)) == NULL) { | |
69 gaim_debug(GAIM_DEBUG_ERROR, "msn", | |
70 "Group '%s' appears in server-side " | |
71 "buddy list, but not here!", | |
72 group_name); | |
73 } | |
74 | |
75 if (g == NULL) { | |
76 if ((g = gaim_find_group(_("Buddies"))) == NULL) { | |
77 g = gaim_group_new(_("Buddies")); | |
78 gaim_blist_add_group(g, NULL); | |
79 } | |
80 } | |
81 | |
82 b = gaim_buddy_new(gc->account, | |
83 msn_user_get_passport(user), NULL); | |
84 | |
85 gaim_blist_add_buddy(b, g, NULL); | |
86 } | |
87 | |
88 b->proto_data = user; | |
89 | |
90 serv_got_alias(gc, (char *)msn_user_get_passport(user), | |
91 (char *)msn_user_get_name(user)); | |
92 | |
93 return TRUE; | |
94 } | |
95 | |
96 | |
97 /************************************************************************** | |
40 * Callbacks | 98 * Callbacks |
41 **************************************************************************/ | 99 **************************************************************************/ |
42 static void | 100 static void |
43 msn_accept_add_cb(MsnPermitAdd *pa) | 101 msn_accept_add_cb(MsnPermitAdd *pa) |
44 { | 102 { |
342 static gboolean | 400 static gboolean |
343 __add_cmd(MsnServConn *servconn, const char *command, const char **params, | 401 __add_cmd(MsnServConn *servconn, const char *command, const char **params, |
344 size_t param_count) | 402 size_t param_count) |
345 { | 403 { |
346 MsnSession *session = servconn->session; | 404 MsnSession *session = servconn->session; |
405 MsnUser *user; | |
347 struct gaim_connection *gc = session->account->gc; | 406 struct gaim_connection *gc = session->account->gc; |
348 MsnPermitAdd *pa; | 407 MsnPermitAdd *pa; |
349 GSList *sl; | 408 GSList *sl; |
350 const char *list, *passport; | 409 const char *list, *passport; |
351 char *friend; | 410 char *friend; |
354 list = params[1]; | 413 list = params[1]; |
355 passport = params[3]; | 414 passport = params[3]; |
356 | 415 |
357 friend = msn_url_decode(params[4]); | 416 friend = msn_url_decode(params[4]); |
358 | 417 |
359 if (g_ascii_strcasecmp(list, "RL")) | 418 if (!g_ascii_strcasecmp(list, "FL")) { |
419 user = msn_user_new(session, passport, friend); | |
420 | |
421 __add_buddy(servconn, user); | |
422 | |
423 return TRUE; | |
424 } | |
425 else if (g_ascii_strcasecmp(list, "RL")) | |
360 return TRUE; | 426 return TRUE; |
361 | 427 |
362 for (sl = gc->account->permit; sl != NULL; sl = sl->next) { | 428 for (sl = gc->account->permit; sl != NULL; sl = sl->next) { |
363 if (!gaim_utf8_strcasecmp(sl->data, passport)) | 429 if (!gaim_utf8_strcasecmp(sl->data, passport)) |
364 return TRUE; | 430 return TRUE; |
365 } | 431 } |
366 | 432 |
367 pa = g_new0(MsnPermitAdd, 1); | 433 user = msn_user_new(session, passport, friend); |
368 pa->user = msn_user_new(session, passport, friend); | 434 |
369 pa->gc = gc; | 435 pa = g_new0(MsnPermitAdd, 1); |
436 pa->user = user; | |
437 pa->gc = gc; | |
370 | 438 |
371 g_snprintf(msg, sizeof(msg), | 439 g_snprintf(msg, sizeof(msg), |
372 _("The user %s (%s) wants to add %s to his or her buddy list."), | 440 _("The user %s (%s) wants to add %s to his or her buddy list."), |
373 passport, friend, gc->username); | 441 passport, friend, gc->username); |
374 | 442 |
682 session->lists.block = g_slist_concat(session->lists.block, | 750 session->lists.block = g_slist_concat(session->lists.block, |
683 gc->account->deny); | 751 gc->account->deny); |
684 | 752 |
685 while (session->lists.forward != NULL) { | 753 while (session->lists.forward != NULL) { |
686 MsnUser *user = session->lists.forward->data; | 754 MsnUser *user = session->lists.forward->data; |
687 struct buddy *b; | |
688 | |
689 b = gaim_find_buddy(gc->account, msn_user_get_passport(user)); | |
690 | 755 |
691 session->lists.forward = g_slist_remove(session->lists.forward, | 756 session->lists.forward = g_slist_remove(session->lists.forward, |
692 user); | 757 user); |
693 | 758 |
694 if (b == NULL) { | 759 __add_buddy(servconn, user); |
695 struct group *g = NULL; | |
696 const char *group_name = NULL; | |
697 int group_id; | |
698 | |
699 group_id = msn_user_get_group_id(user); | |
700 | |
701 if (group_id > -1) { | |
702 group_name = g_hash_table_lookup(session->group_names, | |
703 &group_id); | |
704 } | |
705 | |
706 if (group_name == NULL) { | |
707 gaim_debug(GAIM_DEBUG_WARNING, "msn", | |
708 "Group ID %d for user %s was not defined.\n", | |
709 group_id, passport); | |
710 } | |
711 else if ((g = gaim_find_group(group_name)) == NULL) { | |
712 gaim_debug(GAIM_DEBUG_ERROR, "msn", | |
713 "Group '%s' appears in server-side " | |
714 "buddy list, but not here!", | |
715 group_name); | |
716 } | |
717 | |
718 if (g == NULL) { | |
719 if ((g = gaim_find_group(_("Buddies"))) == NULL) { | |
720 g = gaim_group_new(_("Buddies")); | |
721 gaim_blist_add_group(g, NULL); | |
722 } | |
723 } | |
724 | |
725 b = gaim_buddy_new(gc->account, | |
726 msn_user_get_passport(user), NULL); | |
727 | |
728 gaim_blist_add_buddy(b, g, NULL); | |
729 } | |
730 | |
731 b->proto_data = user; | |
732 | |
733 serv_got_alias(gc, (char *)msn_user_get_passport(user), | |
734 (char *)msn_user_get_name(user)); | |
735 } | 760 } |
736 | 761 |
737 session->syncing_lists = FALSE; | 762 session->syncing_lists = FALSE; |
738 session->lists_synced = TRUE; | 763 session->lists_synced = TRUE; |
739 } | 764 } |