comparison src/protocols/msn/notification.c @ 5372:fa0217bec87e

[gaim-migrate @ 5748] The mobile state should now reflect the server under all cases. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Wed, 14 May 2003 07:50:26 +0000
parents 379beab3d157
children 0436e39c70cf
comparison
equal deleted inserted replaced
5371:daaeaf4696a1 5372:fa0217bec87e
431 __bpr_cmd(MsnServConn *servconn, const char *command, const char **params, 431 __bpr_cmd(MsnServConn *servconn, const char *command, const char **params,
432 size_t param_count) 432 size_t param_count)
433 { 433 {
434 MsnSession *session = servconn->session; 434 MsnSession *session = servconn->session;
435 struct gaim_connection *gc = session->account->gc; 435 struct gaim_connection *gc = session->account->gc;
436 struct buddy *b;
437 const char *passport, *type, *value; 436 const char *passport, *type, *value;
438 int status = 0;
439 MsnUser *user; 437 MsnUser *user;
440 438
441 passport = params[1]; 439 passport = params[1];
442 type = params[2]; 440 type = params[2];
443 value = params[3]; 441 value = params[3];
444 442
445 user = msn_users_find_with_passport(session->users, passport); 443 user = msn_users_find_with_passport(session->users, passport);
446 444
447 if (value != NULL) { 445 if (value != NULL) {
448 if (!strcmp(type, "MOB")) { 446 if (!strcmp(type, "MOB"))
449 if ((b = gaim_find_buddy(gc->account, passport)) != NULL) { 447 user->mobile = (!strcmp(value, "Y"));
450 if (GAIM_BUDDY_IS_ONLINE(b)) { 448 else if (!strcmp(type, "MBE"))
451 if (!strcmp(value, "Y")) 449 user->allow_pages = (!strcmp(value, "Y"));
452 status = (b->uc | (1 << 5));
453 else if (!strcmp(value, "N"))
454 status = (b->uc ^ (1 << 5));
455
456 serv_got_update(gc, (char *)passport, 1, 0, 0, 0, status);
457 }
458 }
459 }
460 else if (!strcmp(type, "PHH")) 450 else if (!strcmp(type, "PHH"))
461 msn_user_set_home_phone(user, msn_url_decode(value)); 451 msn_user_set_home_phone(user, msn_url_decode(value));
462 else if (!strcmp(type, "PHW")) 452 else if (!strcmp(type, "PHW"))
463 msn_user_set_work_phone(user, msn_url_decode(value)); 453 msn_user_set_work_phone(user, msn_url_decode(value));
464 else if (!strcmp(type, "PHM")) 454 else if (!strcmp(type, "PHM"))
465 msn_user_set_mobile_phone(user, msn_url_decode(value)); 455 msn_user_set_mobile_phone(user, msn_url_decode(value));
456 }
457
458 if (!strcmp(type, "MOB") || !strcmp(type, "MBE")) {
459 struct buddy *b;
460
461 if ((b = gaim_find_buddy(gc->account, passport)) != NULL) {
462 if (GAIM_BUDDY_IS_ONLINE(b))
463 serv_got_update(gc, (char *)passport, 1, 0, 0, 0, b->uc);
464 }
466 } 465 }
467 466
468 return TRUE; 467 return TRUE;
469 } 468 }
470 469
667 session->lists.block = g_slist_copy(gc->account->deny); 666 session->lists.block = g_slist_copy(gc->account->deny);
668 667
669 while (session->lists.forward != NULL) { 668 while (session->lists.forward != NULL) {
670 MsnUser *user = session->lists.forward->data; 669 MsnUser *user = session->lists.forward->data;
671 struct buddy *b; 670 struct buddy *b;
672 671
673 b = gaim_find_buddy(gc->account, msn_user_get_passport(user)); 672 b = gaim_find_buddy(gc->account, msn_user_get_passport(user));
674 673
675 session->lists.forward = g_slist_remove(session->lists.forward, 674 session->lists.forward = g_slist_remove(session->lists.forward,
676 user); 675 user);
677 676
707 } 706 }
708 707
709 b = gaim_buddy_new(gc->account, 708 b = gaim_buddy_new(gc->account,
710 msn_user_get_passport(user), NULL); 709 msn_user_get_passport(user), NULL);
711 710
712 b->proto_data = user;
713
714 gaim_blist_add_buddy(b, g, NULL); 711 gaim_blist_add_buddy(b, g, NULL);
715 } 712 }
713
714 b->proto_data = user;
716 715
717 serv_got_alias(gc, (char *)msn_user_get_passport(user), 716 serv_got_alias(gc, (char *)msn_user_get_passport(user),
718 (char *)msn_user_get_name(user)); 717 (char *)msn_user_get_name(user));
719 } 718 }
720 } 719 }