comparison pidgin-twitter.c @ 219:739ed7a4426c

revised receiving_im_cb(). conv may be NULL so that filter might not work for messages which arrived at before conversation has been established.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Fri, 29 Aug 2008 01:11:16 +0900
parents 27651b73a638
children 1ebef23bbccb
comparison
equal deleted inserted replaced
218:27651b73a638 219:739ed7a4426c
1443 1443
1444 return is_identica_account(account, name); 1444 return is_identica_account(account, name);
1445 } 1445 }
1446 1446
1447 static gint 1447 static gint
1448 get_service_type_by_account(PurpleAccount *account, const char *sender)
1449 {
1450 gint service = unknown_service;
1451
1452 g_return_val_if_fail(account != NULL, unknown_service);
1453 g_return_val_if_fail(sender != NULL, unknown_service);
1454
1455 if(is_twitter_account(account, sender))
1456 service = twitter_service;
1457 else if(is_wassr_account(account, sender))
1458 service = wassr_service;
1459 else if(is_identica_account(account, sender))
1460 service = identica_service;
1461
1462 return service;
1463 }
1464
1465 static gint
1448 get_service_type(PurpleConversation *conv) 1466 get_service_type(PurpleConversation *conv)
1449 { 1467 {
1450 gint service = unknown_service; 1468 gint service = unknown_service;
1451 1469
1452 g_return_val_if_fail(conv != NULL, unknown_service); 1470 g_return_val_if_fail(conv != NULL, unknown_service);
1541 1559
1542 gchar *plain = strip_html_markup(*buffer); 1560 gchar *plain = strip_html_markup(*buffer);
1543 1561
1544 switch(service) { 1562 switch(service) {
1545 case twitter_service: 1563 case twitter_service:
1564 default:
1546 list = purple_prefs_get_string(OPT_FILTER_TWITTER); 1565 list = purple_prefs_get_string(OPT_FILTER_TWITTER);
1547 screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_TWITTER)); 1566 screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_TWITTER));
1548 break; 1567 break;
1549 case wassr_service: 1568 case wassr_service:
1550 list = purple_prefs_get_string(OPT_FILTER_WASSR); 1569 list = purple_prefs_get_string(OPT_FILTER_WASSR);
1583 continue; 1602 continue;
1584 twitter_debug("candidate = %s\n", *candidate); 1603 twitter_debug("candidate = %s\n", *candidate);
1585 if(!strcmp(user, *candidate)) { 1604 if(!strcmp(user, *candidate)) {
1586 twitter_debug("match. filter %s\n", user); 1605 twitter_debug("match. filter %s\n", user);
1587 /* pidgin should handle this flag properly --yaz */ 1606 /* pidgin should handle this flag properly --yaz */
1588 // *flags |= PURPLE_MESSAGE_INVISIBLE; 1607 // *flags |= PURPLE_MESSAGE_INVISIBLE;
1589 1608
1590 /* temporal workaround */ 1609 /* temporal workaround */
1591 g_free(*sender); *sender = NULL; 1610 g_free(*sender); *sender = NULL;
1592 g_free(*buffer); *buffer = NULL; 1611 g_free(*buffer); *buffer = NULL;
1593 break; 1612 break;
1609 PurpleConversation *conv, PurpleMessageFlags *flags, void *data) 1628 PurpleConversation *conv, PurpleMessageFlags *flags, void *data)
1610 { 1629 {
1611 twitter_debug("called\n"); 1630 twitter_debug("called\n");
1612 twitter_debug("buffer = %s suppress_oops = %d\n", *buffer, suppress_oops); 1631 twitter_debug("buffer = %s suppress_oops = %d\n", *buffer, suppress_oops);
1613 1632
1614 gint service = get_service_type(conv); 1633 gint service;
1634
1635 service = get_service_type_by_account(account, *sender);
1636 twitter_debug("service = %d\n", service);
1615 1637
1616 #ifdef _WIN32 1638 #ifdef _WIN32
1617 /* suppress notification of incoming messages. */ 1639 /* suppress notification of incoming messages. */
1618 if(service != unknown_service && 1640 if(service != unknown_service &&
1619 purple_prefs_get_bool(OPT_PREVENT_NOTIFICATION)) { 1641 purple_prefs_get_bool(OPT_PREVENT_NOTIFICATION)) {