diff options
author | dx <dx@dxzone.com.ar> | 2017-06-26 03:48:51 -0300 |
---|---|---|
committer | dx <dx@dxzone.com.ar> | 2017-06-26 03:48:51 -0300 |
commit | aed5274db514beabd493b4e623f12e0afc405461 (patch) | |
tree | 17122ca271fb54b45480c2488b3deb9acdf7051f | |
parent | 14b850bf4116949b57cf828d54fc302b0c54a022 (diff) | |
download | pidgin-aed5274db514beabd493b4e623f12e0afc405461.tar.gz |
facebook: add "Mark messages as read only when available" setting
-rw-r--r-- | libpurple/protocols/facebook/facebook.c | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/libpurple/protocols/facebook/facebook.c b/libpurple/protocols/facebook/facebook.c index 9f25f71a18..9554adc783 100644 --- a/libpurple/protocols/facebook/facebook.c +++ b/libpurple/protocols/facebook/facebook.c @@ -827,11 +827,32 @@ fb_cb_api_typing(FbApi *api, FbApiTyping *typg, gpointer data) } } +static void +fb_mark_read(FbData *fata, FbId id, gboolean thread) +{ + FbApi *api; + PurpleAccount *acct; + PurpleConnection *gc; + + gc = fb_data_get_connection(fata); + acct = purple_connection_get_account(gc); + api = fb_data_get_api(fata); + + if (!fb_data_get_unread(fata, id) || + (purple_account_get_bool(acct, "mark-read-available", FALSE) && + fb_api_is_invisible(api))) + { + return; + } + + fb_data_set_unread(fata, id, FALSE); + fb_api_read(api, id, thread); +} + static gboolean fb_cb_conv_read(gpointer data) { const gchar *name; - FbApi *api; FbData *fata; FbId id; gchar *tname; @@ -847,15 +868,9 @@ fb_cb_conv_read(gpointer data) fb_data_clear_timeout(fata, tname, FALSE); g_free(tname); - if (!purple_conversation_has_focus(conv) || - !fb_data_get_unread(fata, id)) - { - return FALSE; + if (purple_conversation_has_focus(conv)) { + fb_mark_read(fata, id, PURPLE_IS_CHAT_CONVERSATION(conv)); } - - api = fb_data_get_api(fata); - fb_data_set_unread(fata, id, FALSE); - fb_api_read(api, id, PURPLE_IS_CHAT_CONVERSATION(conv)); return FALSE; } @@ -1532,10 +1547,14 @@ facebook_protocol_init(PurpleProtocol *protocol) "sync-interval", 5); opts = g_list_prepend(opts, opt); - opt = purple_account_option_bool_new(_("Mark messages as read"), + opt = purple_account_option_bool_new(_("Mark messages as read on focus"), "mark-read", TRUE); opts = g_list_prepend(opts, opt); + opt = purple_account_option_bool_new(_("Mark messages as read only when available"), + "mark-read-available", FALSE); + opts = g_list_prepend(opts, opt); + opt = purple_account_option_bool_new(_("Show self messages"), "show-self", TRUE); opts = g_list_prepend(opts, opt); |