Mercurial > pidgin-twitter
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)) { |