comparison twitter_api.c @ 287:4a7f4ba199cc

- version bump to 0.8.3 - rewrite signed_on_cb()
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Tue, 03 Feb 2009 19:59:29 +0900
parents 2d559555875f
children 6a206fbc6e46
comparison
equal deleted inserted replaced
286:6d0bb66fedc7 287:4a7f4ba199cc
521 } 521 }
522 522
523 void 523 void
524 signed_on_cb(PurpleConnection *gc) 524 signed_on_cb(PurpleConnection *gc)
525 { 525 {
526 PurpleBuddyList *list = purple_get_blist(); 526 PurpleAccount *account;
527 PurpleBlistNode *gnode, *cnode, *bnode; 527 PurpleBuddy *buddy;
528 PurpleBuddy *b; 528 PurpleConversation *gconv;
529 529 const char name[] = "twitter@twitter.com";
530 twitter_debug("called\n"); 530
531 531 if(!purple_prefs_get_bool(OPT_API_BASE_POST)) {
532 if(!purple_prefs_get_bool(OPT_API_BASE_POST)) 532 twitter_debug("per prefs");
533 return; 533 return;
534 534 }
535 if (!list) 535
536 return; 536 account = purple_connection_get_account(gc);
537 537 if(!account) {
538 twitter_debug("scan list\n"); 538 twitter_debug("no account");
539 539 return;
540 for (gnode = list->root; gnode; gnode = gnode->next) { 540 }
541 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) 541
542 continue; 542 buddy = purple_find_buddy(account, name);
543 543 if(!buddy) {
544 for(cnode = gnode->child; cnode; cnode = cnode->next) { 544 twitter_debug("no buddy");
545 545 return;
546 if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) 546 }
547 continue; 547
548 548 gconv = purple_find_conversation_with_account(
549 for(bnode = cnode->child; bnode; bnode = bnode->next) { 549 PURPLE_CONV_TYPE_IM, name, account);
550 if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) 550 if(!gconv) {
551 continue; 551 gconv = purple_conversation_new(
552 552 PURPLE_CONV_TYPE_IM, account, name);
553 b = (PurpleBuddy *)bnode; 553 twitter_debug("new conv");
554 554 }
555 if(!PURPLE_BUDDY_IS_ONLINE(b)) { 555 }
556 const char *name;
557 PurpleAccount *account;
558 name = purple_buddy_get_name(b);
559 account = purple_buddy_get_account(b);
560 if (is_twitter_account(account, name)) {
561 PurpleConversation *gconv;
562 gconv = purple_find_conversation_with_account(
563 PURPLE_CONV_TYPE_IM, name, account);
564 if (!gconv) {
565 gconv = purple_conversation_new(
566 PURPLE_CONV_TYPE_IM, account, name);
567 }
568 }
569 }
570 }
571 }
572 }
573 }