diff options
author | jgeboski <jgeboski@gmail.com> | 2016-01-08 00:32:48 +0300 |
---|---|---|
committer | jgeboski <jgeboski@gmail.com> | 2016-01-08 00:32:48 +0300 |
commit | 9e20dc91e174f0c5b4eb91c56e414967120904cf (patch) | |
tree | 2dbfcb6e46b2bdf3a761e327ab810e1db9806434 | |
parent | 22a70683752aef38a29bb95b01db54e1055d213e (diff) |
VERSION: update to ad2ee74b913aad2ee74b913a
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | include/purple-compat.h | 1 | ||||
-rw-r--r-- | patches/01-makefile.patch | 15 | ||||
-rw-r--r-- | patches/03-plugin.patch | 337 |
5 files changed, 203 insertions, 163 deletions
@@ -1,3 +1,14 @@ +purple-facebook-ad2ee74b913a (2016-01-07): + - Added an account option for self messages + - Attempt to silently reconnect the MQTT stream + - Fixed nonfunctional group chat auto-rejoining + - Fixed the self contact being ignored + - Fixed the timestamps on incoming messages not being preserved + - Ignore messages which are sequentially duplicated + - Implemented queued message sending + - Minor bug fixes and refactoring + - Properly handle optional Thrift fields and scoping + purple-facebook-1852eb9052a0 (2015-12-25): - Fixed broken contact counting with non-friends - Trivial documentation fixes @@ -1 +1 @@ -1852eb9052a0 +ad2ee74b913a diff --git a/include/purple-compat.h b/include/purple-compat.h index 4e1d439..dfef430 100644 --- a/include/purple-compat.h +++ b/include/purple-compat.h @@ -68,6 +68,7 @@ struct _PurpleMessage #define purple_buddy_set_server_alias purple_blist_server_alias_buddy #define purple_chat_conversation_add_user purple_conv_chat_add_user #define purple_chat_conversation_get_id purple_conv_chat_get_id +#define purple_chat_conversation_has_left purple_conv_chat_has_left #define purple_chat_conversation_has_user purple_conv_chat_find_user #define purple_chat_conversation_remove_user purple_conv_chat_remove_user #define purple_chat_conversation_set_topic purple_conv_chat_set_topic diff --git a/patches/01-makefile.patch b/patches/01-makefile.patch index b976661..3a3a8d7 100644 --- a/patches/01-makefile.patch +++ b/patches/01-makefile.patch @@ -1,6 +1,6 @@ -diff -r 078fbf8d1a4e libpurple/protocols/facebook/Makefile.am ---- a/libpurple/protocols/facebook/Makefile.am Mon Dec 21 22:29:34 2015 -0500 -+++ b/libpurple/protocols/facebook/Makefile.am Mon Dec 21 22:37:31 2015 -0500 +diff -r ad2ee74b913a libpurple/protocols/facebook/Makefile.am +--- a/libpurple/protocols/facebook/Makefile.am Thu Jan 07 14:06:04 2016 -0500 ++++ b/libpurple/protocols/facebook/Makefile.am Thu Jan 07 15:45:09 2016 -0500 @@ -23,7 +23,12 @@ thrift.c \ thrift.h \ @@ -15,12 +15,13 @@ diff -r 078fbf8d1a4e libpurple/protocols/facebook/Makefile.am CLEANFILES = \ marshal.c \ -@@ -57,10 +62,9 @@ +@@ -57,11 +62,9 @@ endif AM_CPPFLAGS = \ - -I$(top_srcdir)/libpurple \ - -I$(top_builddir)/libpurple \ +- -I$(top_srcdir) \ $(GLIB_CFLAGS) \ $(JSON_CFLAGS) \ + $(PURPLE_CFLAGS) \ @@ -28,9 +29,9 @@ diff -r 078fbf8d1a4e libpurple/protocols/facebook/Makefile.am - $(GPLUGIN_CFLAGS) \ + $(PLUGIN_CFLAGS) \ $(DEBUG_CFLAGS) -diff -r 078fbf8d1a4e libpurple/protocols/facebook/Makefile.mingw ---- a/libpurple/protocols/facebook/Makefile.mingw Mon Dec 21 22:29:34 2015 -0500 -+++ b/libpurple/protocols/facebook/Makefile.mingw Mon Dec 21 22:37:31 2015 -0500 +diff -r ad2ee74b913a libpurple/protocols/facebook/Makefile.mingw +--- a/libpurple/protocols/facebook/Makefile.mingw Thu Jan 07 14:06:04 2016 -0500 ++++ b/libpurple/protocols/facebook/Makefile.mingw Thu Jan 07 15:45:09 2016 -0500 @@ -50,7 +50,9 @@ json.c \ mqtt.c \ diff --git a/patches/03-plugin.patch b/patches/03-plugin.patch index 90569aa..9a14ef1 100644 --- a/patches/03-plugin.patch +++ b/patches/03-plugin.patch @@ -1,6 +1,6 @@ -diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c ---- a/libpurple/protocols/facebook/facebook.c Mon Dec 21 21:34:55 2015 -0500 -+++ b/libpurple/protocols/facebook/facebook.c Mon Dec 21 22:02:55 2015 -0500 +diff -r ad2ee74b913a libpurple/protocols/facebook/facebook.c +--- a/libpurple/protocols/facebook/facebook.c Thu Jan 07 14:06:04 2016 -0500 ++++ b/libpurple/protocols/facebook/facebook.c Thu Jan 07 16:30:08 2016 -0500 @@ -446,7 +446,7 @@ id = purple_image_store_add_weak(pimg); @@ -10,7 +10,7 @@ diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c PURPLE_IMAGE_STORE_PROTOCOL "%u\">", id); msg->flags |= FB_API_MESSAGE_FLAG_DONE; -@@ -825,7 +825,7 @@ +@@ -836,7 +836,7 @@ GSList *select = NULL; PurpleConnection *gc; @@ -19,7 +19,7 @@ diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c return; } -@@ -1011,7 +1011,7 @@ +@@ -1022,7 +1022,7 @@ PurpleConnection *gc; PurpleMenuAction *act; @@ -28,7 +28,7 @@ diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c return NULL; } -@@ -1059,7 +1059,8 @@ +@@ -1070,7 +1070,8 @@ } static gint @@ -38,7 +38,7 @@ diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c { const gchar *name; const gchar *text; -@@ -1068,6 +1069,8 @@ +@@ -1079,6 +1080,8 @@ FbId uid; gchar *sext; @@ -47,7 +47,7 @@ diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c fata = purple_connection_get_protocol_data(gc); api = fb_data_get_api(fata); -@@ -1206,7 +1209,8 @@ +@@ -1217,7 +1220,8 @@ } static gint @@ -57,7 +57,7 @@ diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c { const gchar *name; const gchar *text; -@@ -1217,6 +1221,8 @@ +@@ -1228,6 +1232,8 @@ PurpleAccount *acct; PurpleChatConversation *chat; @@ -66,37 +66,140 @@ diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c acct = purple_connection_get_account(gc); fata = purple_connection_get_protocol_data(gc); api = fb_data_get_api(fata); -@@ -1385,99 +1391,6 @@ +@@ -1396,14 +1402,119 @@ } static void -facebook_protocol_init(PurpleProtocol *protocol) --{ -- GList *opts = NULL; -- PurpleAccountOption *opt; -- ++fb_cmds_register(void) ++{ ++ PurpleCmdId id; ++ ++ static PurpleCmdFlag cflags = ++ PURPLE_CMD_FLAG_CHAT | ++ PURPLE_CMD_FLAG_PROTOCOL_ONLY; ++ ++ g_return_if_fail(fb_cmds == NULL); ++ ++ id = purple_cmd_register("kick", "s", PURPLE_CMD_P_PROTOCOL, cflags, ++ "prpl-facebook", fb_cmd_kick, ++ _("kick: Kick someone from the chat"), ++ NULL); ++ fb_cmds = g_slist_prepend(fb_cmds, GUINT_TO_POINTER(id)); ++ ++ id = purple_cmd_register("leave", "", PURPLE_CMD_P_PROTOCOL, cflags, ++ "prpl-facebook", fb_cmd_leave, ++ _("leave: Leave the chat"), ++ NULL); ++ fb_cmds = g_slist_prepend(fb_cmds, GUINT_TO_POINTER(id)); ++} ++ ++static void ++fb_cmds_unregister_free(gpointer data) ++{ ++ PurpleCmdId id = GPOINTER_TO_UINT(data); ++ purple_cmd_unregister(id); ++} ++ ++static void ++fb_cmds_unregister(void) ++{ ++ g_slist_free_full(fb_cmds, fb_cmds_unregister_free); ++} ++ ++static gboolean ++plugin_load(PurplePlugin *plugin) ++{ ++ fb_cmds_register(); ++ _purple_socket_init(); ++ purple_http_init(); ++ return TRUE; ++} ++ ++static gboolean ++plugin_unload(PurplePlugin *plugin) ++{ ++ fb_cmds_unregister(); ++ purple_http_uninit(); ++ _purple_socket_uninit(); ++ return TRUE; ++} ++ ++G_MODULE_EXPORT gboolean ++purple_init_plugin(PurplePlugin *plugin); ++ ++G_MODULE_EXPORT gboolean ++purple_init_plugin(PurplePlugin *plugin) + { + GList *opts = NULL; + PurpleAccountOption *opt; + - protocol->id = FB_PROTOCOL_ID; - protocol->name = "Facebook"; - protocol->options = OPT_PROTO_CHAT_TOPIC; -- -- opt = purple_account_option_int_new(_("Buddy list sync interval"), -- "sync-interval", 30); -- opts = g_list_prepend(opts, opt); -- -- opt = purple_account_option_bool_new(_("Mark messages as read"), -- "mark-read", TRUE); -- opts = g_list_prepend(opts, opt); -- -- opt = purple_account_option_bool_new(_("Show unread messages"), -- "show-unread", TRUE); -- opts = g_list_prepend(opts, opt); -- -- opt = purple_account_option_bool_new(_("Open new group chats with " -- "incoming messages"), -- "group-chat-open", TRUE); -- opts = g_list_prepend(opts, opt); ++ static gboolean inited = FALSE; ++ static PurplePluginInfo info; ++ static PurplePluginProtocolInfo pinfo; ++ ++ (void) fb_protocol; ++ plugin->info = &info; ++ ++ if (G_LIKELY(inited)) { ++ return purple_plugin_register(plugin); ++ } ++ ++ memset(&info, 0, sizeof info); ++ memset(&pinfo, 0, sizeof pinfo); ++ ++ info.magic = PURPLE_PLUGIN_MAGIC; ++ info.major_version = PURPLE_MAJOR_VERSION; ++ info.minor_version = PURPLE_MINOR_VERSION; ++ info.type = PURPLE_PLUGIN_PROTOCOL; ++ info.priority = PURPLE_PRIORITY_DEFAULT; ++ info.id = FB_PROTOCOL_ID; ++ info.name = "Facebook"; ++ info.version = PACKAGE_VERSION; ++ info.summary = N_("Facebook Protocol Plugin"); ++ info.description = N_("Facebook Protocol Plugin"); ++ info.homepage = PACKAGE_URL; ++ info.load = plugin_load; ++ info.unload = plugin_unload; ++ info.extra_info = &pinfo; ++ ++ pinfo.options = OPT_PROTO_CHAT_TOPIC; ++ pinfo.list_icon = fb_list_icon; ++ pinfo.tooltip_text = fb_client_tooltip_text; ++ pinfo.status_types = fb_status_types; ++ pinfo.blist_node_menu = fb_client_blist_node_menu; ++ pinfo.chat_info = fb_chat_info; ++ pinfo.chat_info_defaults = fb_chat_info_defaults; ++ pinfo.login = fb_login; ++ pinfo.close = fb_close; ++ pinfo.send_im = fb_im_send; ++ pinfo.send_typing = fb_im_send_typing; ++ pinfo.set_status = fb_server_set_status; ++ pinfo.join_chat = fb_chat_join; ++ pinfo.get_chat_name = fb_chat_get_name; ++ pinfo.chat_invite = fb_chat_invite; ++ pinfo.chat_send = fb_chat_send; ++ pinfo.set_chat_topic = fb_chat_set_topic; ++ pinfo.roomlist_get_list = fb_roomlist_get_list; ++ pinfo.roomlist_cancel = fb_roomlist_cancel; ++ pinfo.offline_message = fb_client_offline_message; ++ pinfo.struct_size = sizeof pinfo; + + opt = purple_account_option_int_new(_("Buddy list sync interval"), + "sync-interval", 30); +@@ -1425,147 +1536,8 @@ + "incoming messages"), + "group-chat-open", TRUE); + opts = g_list_prepend(opts, opt); - protocol->account_options = g_list_reverse(opts); --} ++ pinfo.protocol_options = g_list_reverse(opts); ++ ++ inited = TRUE; ++ return purple_plugin_register(plugin); + } - -static void -facebook_protocol_class_init(PurpleProtocolClass *klass) @@ -163,34 +266,45 @@ diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c -); - -static void - fb_cmds_register(void) - { - PurpleCmdId id; -@@ -1489,13 +1402,13 @@ - g_return_if_fail(fb_cmds == NULL); - - id = purple_cmd_register("kick", "s", PURPLE_CMD_P_PROTOCOL, cflags, +-fb_cmds_register(void) +-{ +- PurpleCmdId id; +- +- static PurpleCmdFlag cflags = +- PURPLE_CMD_FLAG_CHAT | +- PURPLE_CMD_FLAG_PROTOCOL_ONLY; +- +- g_return_if_fail(fb_cmds == NULL); +- +- id = purple_cmd_register("kick", "s", PURPLE_CMD_P_PROTOCOL, cflags, - fb_protocol->id, fb_cmd_kick, -+ "prpl-facebook", fb_cmd_kick, - _("kick: Kick someone from the chat"), - NULL); - fb_cmds = g_slist_prepend(fb_cmds, GUINT_TO_POINTER(id)); - - id = purple_cmd_register("leave", "", PURPLE_CMD_P_PROTOCOL, cflags, +- _("kick: Kick someone from the chat"), +- NULL); +- fb_cmds = g_slist_prepend(fb_cmds, GUINT_TO_POINTER(id)); +- +- id = purple_cmd_register("leave", "", PURPLE_CMD_P_PROTOCOL, cflags, - fb_protocol->id, fb_cmd_leave, -+ "prpl-facebook", fb_cmd_leave, - _("leave: Leave the chat"), - NULL); - fb_cmds = g_slist_prepend(fb_cmds, GUINT_TO_POINTER(id)); -@@ -1514,43 +1427,102 @@ - g_slist_free_full(fb_cmds, fb_cmds_unregister_free); - } - +- _("leave: Leave the chat"), +- NULL); +- fb_cmds = g_slist_prepend(fb_cmds, GUINT_TO_POINTER(id)); +-} +- +-static void +-fb_cmds_unregister_free(gpointer data) +-{ +- PurpleCmdId id = GPOINTER_TO_UINT(data); +- purple_cmd_unregister(id); +-} +- +-static void +-fb_cmds_unregister(void) +-{ +- g_slist_free_full(fb_cmds, fb_cmds_unregister_free); +-} +- -static PurplePluginInfo * -plugin_query(GError **error) -+static gboolean -+plugin_load(PurplePlugin *plugin) - { +-{ - return purple_plugin_info_new( - "id", FB_PROTOCOL_ID, - "name", "Facebook Protocol", @@ -216,108 +330,21 @@ diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.c - return FALSE; - } - - fb_cmds_register(); -+ _purple_socket_init(); -+ purple_http_init(); - return TRUE; - } - - static gboolean +- fb_cmds_register(); +- return TRUE; +-} +- +-static gboolean -plugin_unload(PurplePlugin *plugin, GError **error) -+plugin_unload(PurplePlugin *plugin) - { - fb_cmds_unregister(); +-{ +- fb_cmds_unregister(); - return purple_protocols_remove(fb_protocol, error); -+ purple_http_uninit(); -+ _purple_socket_uninit(); -+ return TRUE; - } - +-} +- -PURPLE_PLUGIN_INIT(facebook, plugin_query, plugin_load, plugin_unload); -+G_MODULE_EXPORT gboolean -+purple_init_plugin(PurplePlugin *plugin); -+ -+G_MODULE_EXPORT gboolean -+purple_init_plugin(PurplePlugin *plugin) -+{ -+ GList *opts = NULL; -+ PurpleAccountOption *opt; -+ -+ static gboolean inited = FALSE; -+ static PurplePluginInfo info; -+ static PurplePluginProtocolInfo pinfo; -+ -+ (void) fb_protocol; -+ plugin->info = &info; -+ -+ if (G_LIKELY(inited)) { -+ return purple_plugin_register(plugin); -+ } -+ -+ memset(&info, 0, sizeof info); -+ memset(&pinfo, 0, sizeof pinfo); -+ -+ info.magic = PURPLE_PLUGIN_MAGIC; -+ info.major_version = PURPLE_MAJOR_VERSION; -+ info.minor_version = PURPLE_MINOR_VERSION; -+ info.type = PURPLE_PLUGIN_PROTOCOL; -+ info.priority = PURPLE_PRIORITY_DEFAULT; -+ info.id = FB_PROTOCOL_ID; -+ info.name = "Facebook"; -+ info.version = PACKAGE_VERSION; -+ info.summary = N_("Facebook Protocol Plugin"); -+ info.description = N_("Facebook Protocol Plugin"); -+ info.homepage = PACKAGE_URL; -+ info.load = plugin_load; -+ info.unload = plugin_unload; -+ info.extra_info = &pinfo; -+ -+ pinfo.options = OPT_PROTO_CHAT_TOPIC; -+ pinfo.list_icon = fb_list_icon; -+ pinfo.tooltip_text = fb_client_tooltip_text; -+ pinfo.status_types = fb_status_types; -+ pinfo.blist_node_menu = fb_client_blist_node_menu; -+ pinfo.chat_info = fb_chat_info; -+ pinfo.chat_info_defaults = fb_chat_info_defaults; -+ pinfo.login = fb_login; -+ pinfo.close = fb_close; -+ pinfo.send_im = fb_im_send; -+ pinfo.send_typing = fb_im_send_typing; -+ pinfo.set_status = fb_server_set_status; -+ pinfo.join_chat = fb_chat_join; -+ pinfo.get_chat_name = fb_chat_get_name; -+ pinfo.chat_invite = fb_chat_invite; -+ pinfo.chat_send = fb_chat_send; -+ pinfo.set_chat_topic = fb_chat_set_topic; -+ pinfo.roomlist_get_list = fb_roomlist_get_list; -+ pinfo.roomlist_cancel = fb_roomlist_cancel; -+ pinfo.offline_message = fb_client_offline_message; -+ pinfo.struct_size = sizeof pinfo; -+ -+ opt = purple_account_option_int_new(_("Buddy list sync interval"), -+ "sync-interval", 30); -+ opts = g_list_prepend(opts, opt); -+ -+ opt = purple_account_option_bool_new(_("Mark messages as read"), -+ "mark-read", TRUE); -+ opts = g_list_prepend(opts, opt); -+ -+ opt = purple_account_option_bool_new(_("Show unread messages"), -+ "show-unread", TRUE); -+ opts = g_list_prepend(opts, opt); -+ -+ opt = purple_account_option_bool_new(_("Open new group chats with " -+ "incoming messages"), -+ "group-chat-open", TRUE); -+ opts = g_list_prepend(opts, opt); -+ pinfo.protocol_options = g_list_reverse(opts); -+ -+ inited = TRUE; -+ return purple_plugin_register(plugin); -+} -diff -r 50bb40c42245 libpurple/protocols/facebook/facebook.h ---- a/libpurple/protocols/facebook/facebook.h Mon Dec 21 21:34:55 2015 -0500 -+++ b/libpurple/protocols/facebook/facebook.h Mon Dec 21 22:02:55 2015 -0500 +diff -r ad2ee74b913a libpurple/protocols/facebook/facebook.h +--- a/libpurple/protocols/facebook/facebook.h Thu Jan 07 14:06:04 2016 -0500 ++++ b/libpurple/protocols/facebook/facebook.h Thu Jan 07 16:30:08 2016 -0500 @@ -22,24 +22,7 @@ #ifndef _FACEBOOK_H_ #define _FACEBOOK_H_ |