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 }