Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dequis/purple-facebook.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjgeboski <jgeboski@gmail.com>2016-01-08 00:32:48 +0300
committerjgeboski <jgeboski@gmail.com>2016-01-08 00:32:48 +0300
commit9e20dc91e174f0c5b4eb91c56e414967120904cf (patch)
tree2dbfcb6e46b2bdf3a761e327ab810e1db9806434
parent22a70683752aef38a29bb95b01db54e1055d213e (diff)
VERSION: update to ad2ee74b913aad2ee74b913a
-rw-r--r--ChangeLog11
-rw-r--r--VERSION2
-rw-r--r--include/purple-compat.h1
-rw-r--r--patches/01-makefile.patch15
-rw-r--r--patches/03-plugin.patch337
5 files changed, 203 insertions, 163 deletions
diff --git a/ChangeLog b/ChangeLog
index 11137d6..d4722ea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/VERSION b/VERSION
index 995316d..a94d4cb 100644
--- a/VERSION
+++ b/VERSION
@@ -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_