/soc/2015/koosha/main: e0b121d88637: XEP-0280: add a protocol ac...

Koosha Khajehmoogahi <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: e0b121d88637537a9a88b5ee5c59dfd572abb208
Author:	 Koosha Khajehmoogahi <[email protected]>
Date:	 2015-07-31 20:50 +0200
Branch:	 default
URL: https://hg.pidgin.im/soc/2015/koosha/main/rev/e0b121d88637

Description:

XEP-0280: add a protocol action for enabling/disabling carbons

diffstat:

 libpurple/protocols/jabber/disco.c  |  10 ++++++++++
 libpurple/protocols/jabber/jabber.c |  24 +++++++++++++++++++++++-
 2 files changed, 33 insertions(+), 1 deletions(-)

diffs (68 lines):

diff --git a/libpurple/protocols/jabber/disco.c b/libpurple/protocols/jabber/disco.c
--- a/libpurple/protocols/jabber/disco.c
+++ b/libpurple/protocols/jabber/disco.c
@@ -390,6 +390,16 @@ jabber_disco_finish_server_info_result_c
 		jabber_request_block_list(js);
 	}
 
+	/* If the server supports message carbons and the user pref is set to use them, ask the server to handle them */
+	if ((js->server_caps & JABBER_CAP_CARBONS) &&
+			purple_account_get_bool(purple_connection_get_account(js->gc), "carbons", FALSE))
+	{
+		JabberIq *iq    = jabber_iq_new(js, JABBER_IQ_SET);
+		PurpleXmlNode *enable = purple_xmlnode_new_child(iq->node, "enable");
+		purple_xmlnode_set_namespace(enable, NS_CARBONS);
+		jabber_iq_send(iq);
+	}
+
 	/* If there are manually specified bytestream proxies, query them */
 	ft_proxies = purple_account_get_string(purple_connection_get_account(js->gc), "ft_proxies", NULL);
 	if (ft_proxies) {
diff --git a/libpurple/protocols/jabber/jabber.c b/libpurple/protocols/jabber/jabber.c
--- a/libpurple/protocols/jabber/jabber.c
+++ b/libpurple/protocols/jabber/jabber.c
@@ -2566,6 +2566,21 @@ static void jabber_password_change(Purpl
 			purple_request_cpar_from_connection(gc), js);
 }
 
+static void jabber_toggle_carbons(PurpleProtocolAction *action)
+{
+	PurpleConnection *gc   = (PurpleConnection *) action->connection;
+	PurpleAccount *account = purple_connection_get_account(gc);
+	JabberStream *js       = purple_connection_get_protocol_data(gc);
+	JabberIq *iq           = jabber_iq_new(js, JABBER_IQ_SET);
+	gboolean has_carbons   = purple_account_get_bool(account, "carbons", FALSE);
+	PurpleXmlNode *value   = purple_xmlnode_new_child(iq->node, has_carbons ? "disable" : "enable");
+	purple_xmlnode_set_namespace(value, NS_CARBONS);
+	jabber_iq_send(iq);
+	purple_account_set_bool(account, "carbons", !has_carbons);
+	/* Reload account actions */
+	purple_protocol_got_account_actions(account);
+}
+
 GList *jabber_get_actions(PurpleConnection *gc)
 {
 	JabberStream *js = purple_connection_get_protocol_data(gc);
@@ -2586,7 +2601,7 @@ GList *jabber_get_actions(PurpleConnecti
 	                             jabber_user_search_begin);
 	m = g_list_append(m, act);
 
-	purple_debug_info("jabber", "jabber_get_actions: have pep: %s\n", js->pep?"YES":"NO");
+	purple_debug_info("jabber", "jabber_get_actions: have pep: %s\n", js->pep? "YES" : "NO");
 
 	if(js->pep)
 		jabber_pep_init_actions(&m);
@@ -2594,6 +2609,13 @@ GList *jabber_get_actions(PurpleConnecti
 	if(js->commands)
 		jabber_adhoc_init_server_commands(js, &m);
 
+	if (js->server_caps & JABBER_CAP_CARBONS) {
+		gboolean has_carbons = purple_account_get_bool(purple_connection_get_account(gc), "carbons", FALSE);
+		act = purple_protocol_action_new(has_carbons ? _("Disable Message Carbons") :
+							       _("Enable Message Carbons") , jabber_toggle_carbons);
+		m = g_list_append(m, act);
+	}
+
 	return m;
 }
 

_______________________________________________
Commits mailing list
[email protected]
https://pidgin.im/cgi-bin/mailman/listinfo/commits
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.