Fri, 01 May 2020 12:13:35 -0500
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
| 7014 | 1 | /* |
| 15884 | 2 | * purple - Jabber Protocol Plugin |
| 7014 | 3 | * |
|
28322
ac8fec1d2234
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents:
27900
diff
changeset
|
4 | * Purple is the legal property of its developers, whose names are too numerous |
|
ac8fec1d2234
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents:
27900
diff
changeset
|
5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
ac8fec1d2234
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents:
27900
diff
changeset
|
6 | * source distribution. |
| 7014 | 7 | * |
| 8 | * This program is free software; you can redistribute it and/or modify | |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 12 | * | |
| 13 | * This program is distributed in the hope that it will be useful, | |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 19 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19419
diff
changeset
|
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 7014 | 21 | * |
| 22 | */ | |
|
40439
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40358
diff
changeset
|
23 | #include <glib/gi18n-lib.h> |
|
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40358
diff
changeset
|
24 | |
|
40358
e6fe6fc1f516
move all protocols, purple plugins, and purple tests to use purple.h instead of including files individually
Gary Kramlich <grim@reaperworld.com>
parents:
40294
diff
changeset
|
25 | #include <purple.h> |
| 7014 | 26 | |
|
26871
d62964222795
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <darkrain42@pidgin.im>
parents:
26867
diff
changeset
|
27 | #include "adhoccommands.h" |
| 7014 | 28 | #include "buddy.h" |
| 29 | #include "chat.h" | |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
30 | #include "data.h" |
|
29913
58f5122fbcd3
First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <malu@pidgin.im>
parents:
29910
diff
changeset
|
31 | #include "google/google.h" |
| 7014 | 32 | #include "message.h" |
|
17768
7be011945a1b
added preliminary frame for pep-support
Andreas Monitzer <am@adiumx.com>
parents:
17351
diff
changeset
|
33 | #include "pep.h" |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
34 | #include "iq.h" |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
35 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
36 | #include <string.h> |
| 7014 | 37 | |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
38 | typedef struct { |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
39 | PurpleConversation *conv; |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
40 | gchar *shortcut; |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
41 | } JabberMessageRemoteSmileyAddData; |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
42 | |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
43 | static GString *jm_body_with_oob(JabberMessage *jm) { |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
44 | GList *etc; |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
45 | GString *body = g_string_new(""); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
46 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
47 | if(jm->xhtml) |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
48 | g_string_append(body, jm->xhtml); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
49 | else if(jm->body) |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
50 | g_string_append(body, jm->body); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
51 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
52 | for(etc = jm->etc; etc; etc = etc->next) { |
| 38358 | 53 | PurpleXmlNode *x = etc->data; |
| 54 | const char *xmlns = purple_xmlnode_get_namespace(x); | |
|
38264
99356e68aff5
Merge release-2.x.y changes, resolve conflicts
qarkai <qarkai@gmail.com>
diff
changeset
|
55 | if(purple_strequal(xmlns, NS_OOB_X_DATA)) { |
| 38358 | 56 | PurpleXmlNode *url, *desc; |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
57 | char *urltxt, *desctxt; |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
58 | |
| 38358 | 59 | url = purple_xmlnode_get_child(x, "url"); |
| 60 | desc = purple_xmlnode_get_child(x, "desc"); | |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
61 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
62 | if(!url) |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
63 | continue; |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
64 | |
| 38358 | 65 | urltxt = purple_xmlnode_get_data(url); |
| 66 | desctxt = desc ? purple_xmlnode_get_data(desc) : urltxt; | |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
67 | |
|
38264
99356e68aff5
Merge release-2.x.y changes, resolve conflicts
qarkai <qarkai@gmail.com>
diff
changeset
|
68 | if(body->len && !purple_strequal(body->str, urltxt)) |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
69 | g_string_append_printf(body, "<br/><a href='%s'>%s</a>", |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
70 | urltxt, desctxt); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
71 | else |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
72 | g_string_printf(body, "<a href='%s'>%s</a>", |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
73 | urltxt, desctxt); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
74 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
75 | g_free(urltxt); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
76 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
77 | if(desctxt != urltxt) |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
78 | g_free(desctxt); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
79 | } |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
80 | } |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
81 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
82 | return body; |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
83 | } |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
84 | |
| 7014 | 85 | void jabber_message_free(JabberMessage *jm) |
| 86 | { | |
| 15980 | 87 | g_free(jm->from); |
| 13484 | 88 | g_free(jm->to); |
| 89 | g_free(jm->id); | |
| 90 | g_free(jm->subject); | |
| 91 | g_free(jm->body); | |
| 92 | g_free(jm->xhtml); | |
| 93 | g_free(jm->password); | |
|
20057
728a7dce565e
grab revision 41389df89a4a6a007d41cec33e33043cd41ea159
Luke Schierer <lschiere@pidgin.im>
parents:
19917
diff
changeset
|
94 | g_free(jm->error); |
|
728a7dce565e
grab revision 41389df89a4a6a007d41cec33e33043cd41ea159
Luke Schierer <lschiere@pidgin.im>
parents:
19917
diff
changeset
|
95 | g_free(jm->thread_id); |
| 13484 | 96 | g_list_free(jm->etc); |
|
20057
728a7dce565e
grab revision 41389df89a4a6a007d41cec33e33043cd41ea159
Luke Schierer <lschiere@pidgin.im>
parents:
19917
diff
changeset
|
97 | g_list_free(jm->eventitems); |
| 7014 | 98 | |
| 99 | g_free(jm); | |
| 100 | } | |
| 101 | ||
| 7145 | 102 | static void handle_chat(JabberMessage *jm) |
| 7014 | 103 | { |
|
40294
e2a342b61dde
Mark a variable as const
Richard Laager <rlaager@pidgin.im>
parents:
40293
diff
changeset
|
104 | const gchar *contact = jm->from; |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
105 | JabberID *jid = jabber_id_new(contact); |
| 7014 | 106 | |
|
29331
9e828e599fc2
jabber: Use some convenience variables here.
Paul Aurich <darkrain42@pidgin.im>
parents:
29330
diff
changeset
|
107 | PurpleConnection *gc; |
|
9e828e599fc2
jabber: Use some convenience variables here.
Paul Aurich <darkrain42@pidgin.im>
parents:
29330
diff
changeset
|
108 | PurpleAccount *account; |
| 7014 | 109 | JabberBuddy *jb; |
| 110 | JabberBuddyResource *jbr; | |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
111 | GString *body; |
| 7014 | 112 | |
| 7310 | 113 | if(!jid) |
| 114 | return; | |
| 115 | ||
|
29331
9e828e599fc2
jabber: Use some convenience variables here.
Paul Aurich <darkrain42@pidgin.im>
parents:
29330
diff
changeset
|
116 | gc = jm->js->gc; |
|
9e828e599fc2
jabber: Use some convenience variables here.
Paul Aurich <darkrain42@pidgin.im>
parents:
29330
diff
changeset
|
117 | account = purple_connection_get_account(gc); |
|
9e828e599fc2
jabber: Use some convenience variables here.
Paul Aurich <darkrain42@pidgin.im>
parents:
29330
diff
changeset
|
118 | |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
119 | jb = jabber_buddy_find(jm->js, contact, TRUE); |
| 7306 | 120 | jbr = jabber_buddy_find_resource(jb, jid->resource); |
| 7014 | 121 | |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
122 | if (jbr && jm->chat_state != JM_STATE_NONE) |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
123 | jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; |
|
27750
f25b6a565494
Use Entity Capabilities to pick up Chat States support. Refs #4650.
Paul Aurich <darkrain42@pidgin.im>
parents:
27749
diff
changeset
|
124 | |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
125 | switch(jm->chat_state) { |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
126 | case JM_STATE_COMPOSING: |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
127 | purple_serv_got_typing(gc, contact, 0, PURPLE_IM_TYPING); |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
128 | break; |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
129 | case JM_STATE_PAUSED: |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
130 | purple_serv_got_typing(gc, contact, 0, PURPLE_IM_TYPED); |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
131 | break; |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
132 | case JM_STATE_GONE: { |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
133 | PurpleIMConversation *im = purple_conversations_find_im_with_account( |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
134 | contact, account); |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
135 | if (im && jid->node && jid->domain) { |
|
15721
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
136 | char buf[256]; |
| 15884 | 137 | PurpleBuddy *buddy; |
|
15721
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
138 | |
|
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
139 | g_snprintf(buf, sizeof(buf), "%s@%s", jid->node, jid->domain); |
|
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
140 | |
|
34728
8efd73063ecf
Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents:
34670
diff
changeset
|
141 | if ((buddy = purple_blist_find_buddy(account, buf))) { |
|
15721
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
142 | const char *who; |
|
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
143 | char *escaped; |
|
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
144 | |
| 15884 | 145 | who = purple_buddy_get_alias(buddy); |
|
15721
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
146 | escaped = g_markup_escape_text(who, -1); |
|
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
147 | |
|
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
148 | g_snprintf(buf, sizeof(buf), |
| 16946 | 149 | _("%s has left the conversation."), escaped); |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20361
diff
changeset
|
150 | g_free(escaped); |
|
15721
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
151 | |
| 15884 | 152 | /* At some point when we restructure PurpleConversation, |
|
15721
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
153 | * this should be able to be implemented by removing the |
|
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
154 | * user from the conversation like we do with chats now. */ |
|
36089
c035b9a63457
Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36084
diff
changeset
|
155 | purple_conversation_write_system_message( |
|
c035b9a63457
Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36084
diff
changeset
|
156 | PURPLE_CONVERSATION(im), buf, 0); |
|
15721
8b054202d398
Include the user's name/alias in the XEP 85 "gone" messages.
Richard Laager <rlaager@pidgin.im>
parents:
15710
diff
changeset
|
157 | } |
|
15710
fbc4a200c853
Receiving XEP 85 'gone' messages. Doesn't do anything because of the string freeze. This is akin to the MSN 'so-and-so has closed the conversation window' messages. Rlaager made a strong point to me that they're not altogether stalky, but can be useful.
Sean Egan <seanegan@pidgin.im>
parents:
15709
diff
changeset
|
158 | } |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
159 | purple_serv_got_typing_stopped(gc, contact); |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
160 | break; |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
161 | } |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
162 | default: |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
163 | purple_serv_got_typing_stopped(gc, contact); |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
164 | } |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
165 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
166 | if (jm->js->googletalk && jm->body && jm->xhtml == NULL) { |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
167 | char *tmp = jm->body; |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
168 | jm->body = jabber_google_format_to_html(jm->body); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
169 | g_free(tmp); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
170 | } |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
171 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
172 | body = jm_body_with_oob(jm); |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
173 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
174 | if(body && body->len) { |
|
29840
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
175 | if (jid->resource) { |
|
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
176 | /* |
|
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
177 | * We received a message from a specific resource, so |
|
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
178 | * we probably want a reply to go to this specific |
|
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
179 | * resource (i.e. bind/lock the conversation to this |
|
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
180 | * resource). |
|
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
181 | * |
|
34622
753f46dd000f
Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents:
33722
diff
changeset
|
182 | * This works because purple_im_conversation_send gets the name |
|
29840
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
183 | * from purple_conversation_get_name() |
|
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
184 | */ |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
185 | PurpleIMConversation *im; |
|
29840
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
186 | |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
187 | im = purple_conversations_find_im_with_account(contact, account); |
|
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
188 | if (im && !purple_strequal(contact, |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
189 | purple_conversation_get_name(PURPLE_CONVERSATION(im)))) { |
|
29840
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
190 | purple_debug_info("jabber", "Binding conversation to %s\n", |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
191 | contact); |
|
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
192 | purple_conversation_set_name(PURPLE_CONVERSATION(im), contact); |
|
29840
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
193 | } |
|
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
194 | } |
|
8792e8fbaa18
jabber: Unlock from locked resource on a message *with content*, as opposed to any message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29366
diff
changeset
|
195 | |
| 8400 | 196 | if(jbr) { |
|
30239
88550c8e461b
jabber: Refined logic for determining "is typing" support.
Paul Aurich <darkrain42@pidgin.im>
parents:
30235
diff
changeset
|
197 | /* Treat SUPPORTED as a terminal with no escape :) */ |
|
88550c8e461b
jabber: Refined logic for determining "is typing" support.
Paul Aurich <darkrain42@pidgin.im>
parents:
30235
diff
changeset
|
198 | if (jbr->chat_states != JABBER_CHAT_STATES_SUPPORTED) { |
|
88550c8e461b
jabber: Refined logic for determining "is typing" support.
Paul Aurich <darkrain42@pidgin.im>
parents:
30235
diff
changeset
|
199 | if (jm->chat_state != JM_STATE_NONE) |
|
88550c8e461b
jabber: Refined logic for determining "is typing" support.
Paul Aurich <darkrain42@pidgin.im>
parents:
30235
diff
changeset
|
200 | jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; |
|
88550c8e461b
jabber: Refined logic for determining "is typing" support.
Paul Aurich <darkrain42@pidgin.im>
parents:
30235
diff
changeset
|
201 | else |
|
88550c8e461b
jabber: Refined logic for determining "is typing" support.
Paul Aurich <darkrain42@pidgin.im>
parents:
30235
diff
changeset
|
202 | jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; |
|
88550c8e461b
jabber: Refined logic for determining "is typing" support.
Paul Aurich <darkrain42@pidgin.im>
parents:
30235
diff
changeset
|
203 | } |
| 13708 | 204 | |
|
37423
d2f0259aa43f
Remove NULL-checks before free(). No functional change.
Michael McConville <mmcco@mykolab.com>
parents:
37153
diff
changeset
|
205 | g_free(jbr->thread_id); |
|
39470
92dbadc3c6e4
Fix jabber message thread handling.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39433
diff
changeset
|
206 | jbr->thread_id = g_strdup(jm->thread_id); |
| 8400 | 207 | } |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
208 | |
|
40290
0a722071a754
Refactor jm->from to contact in handle_chat()
Koosha Khajehmoogahi <koosha@posteo.de>
parents:
39470
diff
changeset
|
209 | purple_serv_got_im(gc, contact, body->str, 0, jm->sent); |
| 7014 | 210 | } |
| 211 | ||
| 212 | jabber_id_free(jid); | |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
213 | |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
214 | if(body) |
|
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
215 | g_string_free(body, TRUE); |
| 7014 | 216 | } |
| 217 | ||
| 7145 | 218 | static void handle_headline(JabberMessage *jm) |
| 219 | { | |
| 220 | char *title; | |
|
17819
862fe0f947a9
Added buzz support using a private extension. Maybe I should write a XEP about that.
Andreas Monitzer <am@adiumx.com>
parents:
17811
diff
changeset
|
221 | GString *body; |
| 7145 | 222 | |
|
17819
862fe0f947a9
Added buzz support using a private extension. Maybe I should write a XEP about that.
Andreas Monitzer <am@adiumx.com>
parents:
17811
diff
changeset
|
223 | if(!jm->xhtml && !jm->body) |
|
862fe0f947a9
Added buzz support using a private extension. Maybe I should write a XEP about that.
Andreas Monitzer <am@adiumx.com>
parents:
17811
diff
changeset
|
224 | return; /* ignore headlines without any content */ |
| 7145 | 225 | |
|
38248
1034c641ec6c
Previously only OOB URLs attached to headline messages were processed. Now any message can show the attached URL.
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
31512
diff
changeset
|
226 | body = jm_body_with_oob(jm); |
| 7145 | 227 | title = g_strdup_printf(_("Message from %s"), jm->from); |
| 228 | ||
| 15884 | 229 | purple_notify_formatted(jm->js->gc, title, jm->subject ? jm->subject : title, |
| 7145 | 230 | NULL, body->str, NULL, NULL); |
| 231 | ||
| 232 | g_free(title); | |
| 233 | g_string_free(body, TRUE); | |
| 234 | } | |
| 235 | ||
| 236 | static void handle_groupchat(JabberMessage *jm) | |
| 7014 | 237 | { |
| 238 | JabberID *jid = jabber_id_new(jm->from); | |
| 7310 | 239 | JabberChat *chat; |
|
36108
69b4fce85ffa
Switch _purple_conversation_write_common and (writing|wrote)-(chat|im)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36098
diff
changeset
|
240 | PurpleMessageFlags messageFlags = 0; |
| 7310 | 241 | |
| 242 | if(!jid) | |
| 243 | return; | |
| 244 | ||
| 245 | chat = jabber_chat_find(jm->js, jid->node, jid->domain); | |
| 7014 | 246 | |
| 247 | if(!chat) | |
| 248 | return; | |
| 249 | ||
| 7971 | 250 | if(jm->subject) { |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
251 | purple_chat_conversation_set_topic(chat->conv, jid->resource, |
| 7183 | 252 | jm->subject); |
|
33722
dd2cec2beaf6
Don't log system messages, that appear on *every* MUC entry/exit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
32323
diff
changeset
|
253 | messageFlags |= PURPLE_MESSAGE_NO_LOG; |
| 7971 | 254 | if(!jm->xhtml && !jm->body) { |
| 9762 | 255 | char *msg, *tmp, *tmp2; |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10607
diff
changeset
|
256 | tmp = g_markup_escape_text(jm->subject, -1); |
| 15884 | 257 | tmp2 = purple_markup_linkify(tmp); |
| 7971 | 258 | if(jid->resource) |
| 9762 | 259 | msg = g_strdup_printf(_("%s has set the topic to: %s"), jid->resource, tmp2); |
| 7971 | 260 | else |
| 9762 | 261 | msg = g_strdup_printf(_("The topic is: %s"), tmp2); |
|
36084
2172bd6dad3e
Add purple_conversation_write_system_message
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36077
diff
changeset
|
262 | purple_conversation_write_system_message(PURPLE_CONVERSATION(chat->conv), |
|
2172bd6dad3e
Add purple_conversation_write_system_message
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36077
diff
changeset
|
263 | msg, messageFlags); |
| 9762 | 264 | g_free(tmp); |
| 265 | g_free(tmp2); | |
| 7971 | 266 | g_free(msg); |
| 267 | } | |
| 268 | } | |
| 7014 | 269 | |
| 7630 | 270 | if(jm->xhtml || jm->body) { |
| 271 | if(jid->resource) | |
|
35499
c4c5e0a670b1
Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents:
35070
diff
changeset
|
272 | purple_serv_got_chat_in(jm->js->gc, chat->id, jid->resource, |
|
33722
dd2cec2beaf6
Don't log system messages, that appear on *every* MUC entry/exit
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
32323
diff
changeset
|
273 | messageFlags | (jm->delayed ? PURPLE_MESSAGE_DELAYED : 0), |
| 7630 | 274 | jm->xhtml ? jm->xhtml : jm->body, jm->sent); |
| 275 | else if(chat->muc) | |
|
36084
2172bd6dad3e
Add purple_conversation_write_system_message
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36077
diff
changeset
|
276 | purple_conversation_write_system_message( |
|
2172bd6dad3e
Add purple_conversation_write_system_message
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36077
diff
changeset
|
277 | PURPLE_CONVERSATION(chat->conv), |
|
2172bd6dad3e
Add purple_conversation_write_system_message
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36077
diff
changeset
|
278 | jm->xhtml ? jm->xhtml : jm->body, messageFlags); |
| 7630 | 279 | } |
| 280 | ||
| 7014 | 281 | jabber_id_free(jid); |
| 282 | } | |
| 283 | ||
| 7145 | 284 | static void handle_groupchat_invite(JabberMessage *jm) |
| 7014 | 285 | { |
| 7310 | 286 | GHashTable *components; |
| 7014 | 287 | JabberID *jid = jabber_id_new(jm->to); |
| 288 | ||
| 7310 | 289 | if(!jid) |
| 290 | return; | |
| 291 | ||
|
15598
834a88c83e95
Get rid of some unnecessary string duping
Mark Doliner <markdoliner@pidgin.im>
parents:
15587
diff
changeset
|
292 | components = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free); |
| 7310 | 293 | |
|
15598
834a88c83e95
Get rid of some unnecessary string duping
Mark Doliner <markdoliner@pidgin.im>
parents:
15587
diff
changeset
|
294 | g_hash_table_replace(components, "room", g_strdup(jid->node)); |
|
834a88c83e95
Get rid of some unnecessary string duping
Mark Doliner <markdoliner@pidgin.im>
parents:
15587
diff
changeset
|
295 | g_hash_table_replace(components, "server", g_strdup(jid->domain)); |
|
834a88c83e95
Get rid of some unnecessary string duping
Mark Doliner <markdoliner@pidgin.im>
parents:
15587
diff
changeset
|
296 | g_hash_table_replace(components, "handle", g_strdup(jm->js->user->node)); |
|
834a88c83e95
Get rid of some unnecessary string duping
Mark Doliner <markdoliner@pidgin.im>
parents:
15587
diff
changeset
|
297 | g_hash_table_replace(components, "password", g_strdup(jm->password)); |
| 7014 | 298 | |
| 299 | jabber_id_free(jid); | |
| 35501 | 300 | purple_serv_got_chat_invite(jm->js->gc, jm->to, jm->from, jm->body, components); |
| 7014 | 301 | } |
| 302 | ||
| 7145 | 303 | static void handle_error(JabberMessage *jm) |
| 7014 | 304 | { |
| 305 | char *buf; | |
| 306 | ||
| 307 | if(!jm->body) | |
| 308 | return; | |
| 309 | ||
| 310 | buf = g_strdup_printf(_("Message delivery to %s failed: %s"), | |
|
13766
6b92ce47f7e5
[gaim-migrate @ 16176]
Daniel Atallah <datallah@pidgin.im>
parents:
13708
diff
changeset
|
311 | jm->from, jm->error ? jm->error : ""); |
| 7014 | 312 | |
|
16961
b6955f946f8f
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents:
16946
diff
changeset
|
313 | purple_notify_formatted(jm->js->gc, _("XMPP Message Error"), _("XMPP Message Error"), buf, |
| 7944 | 314 | jm->xhtml ? jm->xhtml : jm->body, NULL, NULL); |
| 7014 | 315 | |
| 316 | g_free(buf); | |
| 317 | } | |
| 318 | ||
|
17822
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
319 | static void handle_buzz(JabberMessage *jm) { |
|
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
320 | PurpleAccount *account; |
|
25316
8b6461a2f967
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evands@pidgin.im>
parents:
25154
diff
changeset
|
321 | |
|
17823
2ca25e7e65dd
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <am@adiumx.com>
parents:
17822
diff
changeset
|
322 | /* Delayed buzz MUST NOT be accepted */ |
|
2ca25e7e65dd
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <am@adiumx.com>
parents:
17822
diff
changeset
|
323 | if(jm->delayed) |
|
2ca25e7e65dd
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <am@adiumx.com>
parents:
17822
diff
changeset
|
324 | return; |
|
25316
8b6461a2f967
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evands@pidgin.im>
parents:
25154
diff
changeset
|
325 | |
|
17824
52683dfc1f7d
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents:
17823
diff
changeset
|
326 | /* Reject buzz when it's not enabled */ |
|
52683dfc1f7d
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents:
17823
diff
changeset
|
327 | if(!jm->js->allowBuzz) |
|
52683dfc1f7d
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents:
17823
diff
changeset
|
328 | return; |
|
25316
8b6461a2f967
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evands@pidgin.im>
parents:
25154
diff
changeset
|
329 | |
|
17822
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
330 | account = purple_connection_get_account(jm->js->gc); |
|
25316
8b6461a2f967
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evands@pidgin.im>
parents:
25154
diff
changeset
|
331 | |
|
34728
8efd73063ecf
Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents:
34670
diff
changeset
|
332 | if (purple_blist_find_buddy(account, jm->from) == NULL) |
|
17823
2ca25e7e65dd
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <am@adiumx.com>
parents:
17822
diff
changeset
|
333 | return; /* Do not accept buzzes from unknown people */ |
|
2ca25e7e65dd
Switched buzz namespace and tag name to be libpurple-specific and use a more professionally-sounding name ('attention' instead of 'buzz').
Andreas Monitzer <am@adiumx.com>
parents:
17822
diff
changeset
|
334 | |
|
25316
8b6461a2f967
Use purple_prpl_got_attention() for XMPP notifications
Evan Schoenberg <evands@pidgin.im>
parents:
25154
diff
changeset
|
335 | /* xmpp only has 1 attention type, so index is 0 */ |
|
36545
23b59a16c808
Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents:
36362
diff
changeset
|
336 | purple_protocol_got_attention(jm->js->gc, jm->from, 0); |
|
17822
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
337 | } |
|
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
338 | |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
339 | /* used internally by the functions below */ |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
340 | typedef struct { |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
341 | gchar *cid; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
342 | gchar *alt; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
343 | } JabberSmileyRef; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
344 | |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
345 | |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
346 | static void |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
347 | jabber_message_get_refs_from_xmlnode_internal(const PurpleXmlNode *message, |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
348 | GHashTable *table) |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
349 | { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
350 | PurpleXmlNode *child; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
351 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
352 | for (child = purple_xmlnode_get_child(message, "img") ; child ; |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
353 | child = purple_xmlnode_get_next_twin(child)) { |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
354 | const gchar *src = purple_xmlnode_get_attrib(child, "src"); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
355 | |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
356 | if (g_str_has_prefix(src, "cid:")) { |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
357 | const gchar *cid = src + 4; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
358 | |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
359 | /* if we haven't "fetched" this yet... */ |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
360 | if (!g_hash_table_lookup(table, cid)) { |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
361 | /* take a copy of the cid and let the SmileyRef own it... */ |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
362 | gchar *temp_cid = g_strdup(cid); |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
363 | JabberSmileyRef *ref = g_new0(JabberSmileyRef, 1); |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
364 | const gchar *alt = purple_xmlnode_get_attrib(child, "alt"); |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
365 | ref->cid = temp_cid; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
366 | /* if there is no "alt" string, use the cid... |
|
24258
9ae10fafad7a
When receiving an <img/> without the "alt" attribute, set
Marcus Lundblad <malu@pidgin.im>
parents:
24257
diff
changeset
|
367 | include the entire src, eg. "cid:.." to avoid linkification */ |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
368 | if (alt && alt[0] != '\0') { |
|
24259
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
369 | /* workaround for when "alt" is set to the value of the |
|
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
370 | CID (which Jabbim seems to do), to avoid it showing up |
|
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
371 | as an mailto: link */ |
|
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
372 | if (purple_email_is_valid(alt)) { |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
373 | ref->alt = g_strdup_printf("smiley:%s", alt); |
|
24259
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
374 | } else { |
|
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
375 | ref->alt = g_strdup(alt); |
|
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
376 | } |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
377 | } else { |
|
24258
9ae10fafad7a
When receiving an <img/> without the "alt" attribute, set
Marcus Lundblad <malu@pidgin.im>
parents:
24257
diff
changeset
|
378 | ref->alt = g_strdup(src); |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
379 | } |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
380 | g_hash_table_insert(table, temp_cid, ref); |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
381 | } |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
382 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
383 | } |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
384 | |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
385 | for (child = message->child ; child ; child = child->next) { |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
386 | jabber_message_get_refs_from_xmlnode_internal(child, table); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
387 | } |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
388 | } |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
389 | |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
390 | static gboolean |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
391 | jabber_message_get_refs_steal(gpointer key, gpointer value, gpointer user_data) |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
392 | { |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
393 | GList **refs = (GList **) user_data; |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
394 | JabberSmileyRef *ref = (JabberSmileyRef *) value; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
395 | |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
396 | *refs = g_list_append(*refs, ref); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
397 | |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
398 | return TRUE; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
399 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
400 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
401 | static GList * |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
402 | jabber_message_get_refs_from_xmlnode(const PurpleXmlNode *message) |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
403 | { |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
404 | GList *refs = NULL; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
405 | GHashTable *unique_refs = g_hash_table_new(g_str_hash, g_str_equal); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
406 | |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
407 | jabber_message_get_refs_from_xmlnode_internal(message, unique_refs); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
408 | (void) g_hash_table_foreach_steal(unique_refs, |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
409 | jabber_message_get_refs_steal, (gpointer) &refs); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
410 | g_hash_table_destroy(unique_refs); |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
411 | return refs; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
412 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
413 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
414 | static gchar * |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
415 | jabber_message_xml_to_string_strip_img_smileys(PurpleXmlNode *xhtml) |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
416 | { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
417 | gchar *markup = purple_xmlnode_to_str(xhtml, NULL); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
418 | int len = strlen(markup); |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
419 | int pos = 0; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
420 | GString *out = g_string_new(NULL); |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
421 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
422 | while (pos < len) { |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
423 | /* this is a bit cludgy, maybe there is a better way to do this... |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
424 | we need to find all <img> tags within the XHTML and replace those |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
425 | tags with the value of their "alt" attributes */ |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
426 | if (g_str_has_prefix(&(markup[pos]), "<img")) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
427 | PurpleXmlNode *img = NULL; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
428 | int pos2 = pos; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
429 | const gchar *src; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
430 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
431 | for (; pos2 < len ; pos2++) { |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
432 | if (g_str_has_prefix(&(markup[pos2]), "/>")) { |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
433 | pos2 += 2; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
434 | break; |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
435 | } else if (g_str_has_prefix(&(markup[pos2]), "</img>")) { |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
436 | pos2 += 5; |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
437 | break; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
438 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
439 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
440 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
441 | /* note, if the above loop didn't find the end of the <img> tag, |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
442 | it the parsed string will be until the end of the input string, |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
443 | in which case purple_xmlnode_from_str will bail out and return NULL, |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
444 | in this case the "if" statement below doesn't trigger and the |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
445 | text is copied unchanged */ |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
446 | img = purple_xmlnode_from_str(&(markup[pos]), pos2 - pos); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
447 | src = purple_xmlnode_get_attrib(img, "src"); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
448 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
449 | if (g_str_has_prefix(src, "cid:")) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
450 | const gchar *alt = purple_xmlnode_get_attrib(img, "alt"); |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
451 | /* if the "alt" attribute is empty, put the cid as smiley string */ |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
452 | if (alt && alt[0] != '\0') { |
|
24259
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
453 | /* if the "alt" is the same as the CID, as Jabbim does, |
|
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
454 | this prevents linkification... */ |
|
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
455 | if (purple_email_is_valid(alt)) { |
|
24386
0710eb7a41c5
A couple of compile warning fixes, a couple of memory leak plugs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24259
diff
changeset
|
456 | gchar *safe_alt = g_strdup_printf("smiley:%s", alt); |
|
24259
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
457 | out = g_string_append(out, safe_alt); |
|
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
458 | g_free(safe_alt); |
|
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
459 | } else { |
|
35783
dcff8ce68d1b
Remote smileys: fix a xmpp bug of non-escaped custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35764
diff
changeset
|
460 | gchar *alt_escaped = g_markup_escape_text(alt, -1); |
|
dcff8ce68d1b
Remote smileys: fix a xmpp bug of non-escaped custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35764
diff
changeset
|
461 | out = g_string_append(out, alt_escaped); |
|
dcff8ce68d1b
Remote smileys: fix a xmpp bug of non-escaped custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35764
diff
changeset
|
462 | g_free(alt_escaped); |
|
24259
e69d72917038
Added a workaround for receiving smileys from Jabbim,
Marcus Lundblad <malu@pidgin.im>
parents:
24258
diff
changeset
|
463 | } |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
464 | } else { |
|
24258
9ae10fafad7a
When receiving an <img/> without the "alt" attribute, set
Marcus Lundblad <malu@pidgin.im>
parents:
24257
diff
changeset
|
465 | out = g_string_append(out, src); |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
466 | } |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
467 | pos += pos2 - pos; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
468 | } else { |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
469 | out = g_string_append_c(out, markup[pos]); |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
470 | pos++; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
471 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
472 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
473 | purple_xmlnode_free(img); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
474 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
475 | } else { |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
476 | out = g_string_append_c(out, markup[pos]); |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
477 | pos++; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
478 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
479 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
480 | |
|
24387
cba0cfba936e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24386
diff
changeset
|
481 | g_free(markup); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
482 | return g_string_free(out, FALSE); |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
483 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
484 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
485 | static void |
|
29912
4f8e1c3bbc4a
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <malu@pidgin.im>
parents:
29910
diff
changeset
|
486 | jabber_message_add_remote_smileys(JabberStream *js, const gchar *who, |
|
40293
c60c4f96749d
Fix some line wrapping
Richard Laager <rlaager@pidgin.im>
parents:
40290
diff
changeset
|
487 | const PurpleXmlNode *message) |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
488 | { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
489 | PurpleXmlNode *data_tag; |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
490 | for (data_tag = purple_xmlnode_get_child_with_namespace(message, "data", NS_BOB) ; |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
491 | data_tag ; |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
492 | data_tag = purple_xmlnode_get_next_twin(data_tag)) { |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
493 | const gchar *cid = purple_xmlnode_get_attrib(data_tag, "cid"); |
|
29912
4f8e1c3bbc4a
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <malu@pidgin.im>
parents:
29910
diff
changeset
|
494 | const JabberData *data = jabber_data_find_remote_by_cid(js, who, cid); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
495 | |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
496 | if (!data && cid != NULL) { |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
497 | /* we haven't cached this already, let's add it */ |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
498 | JabberData *new_data = jabber_data_create_from_xml(data_tag); |
|
29910
f1c6e586e5c1
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <malu@pidgin.im>
parents:
29906
diff
changeset
|
499 | |
|
f1c6e586e5c1
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <malu@pidgin.im>
parents:
29906
diff
changeset
|
500 | if (new_data) { |
|
29912
4f8e1c3bbc4a
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <malu@pidgin.im>
parents:
29910
diff
changeset
|
501 | jabber_data_associate_remote(js, who, new_data); |
|
29910
f1c6e586e5c1
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <malu@pidgin.im>
parents:
29906
diff
changeset
|
502 | } |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
503 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
504 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
505 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
506 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
507 | static void |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
508 | jabber_message_remote_smiley_got(JabberData *jdata, gchar *alt, gpointer d) { |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
509 | JabberMessageRemoteSmileyAddData *data = (JabberMessageRemoteSmileyAddData *)d; |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
510 | |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
511 | if (jdata) { |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
512 | PurpleSmiley *smiley = NULL; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
513 | |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
514 | purple_debug_info("jabber", |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
515 | "smiley data retrieved successfully"); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
516 | |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
517 | smiley = purple_smiley_new_from_data( |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
518 | data->shortcut, |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
519 | jabber_data_get_data(jdata), |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
520 | jabber_data_get_size(jdata) |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
521 | ); |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
522 | |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
523 | purple_conversation_add_smiley(data->conv, smiley); |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
524 | |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
525 | g_object_unref(G_OBJECT(smiley)); |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
526 | } else { |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
527 | purple_debug_error("jabber", "failed retrieving smiley data"); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
528 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
529 | |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
530 | g_object_unref(G_OBJECT(data->conv)); |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
531 | g_free(data->shortcut); |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
532 | g_slice_free(JabberMessageRemoteSmileyAddData, data); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
533 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
534 | |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
535 | static void |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
536 | jabber_message_remote_smiley_add(JabberStream *js, PurpleConversation *conv, |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
537 | const gchar *from, const gchar *shortcut, const gchar *cid) |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
538 | { |
|
38281
df274be2afa2
A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents:
37423
diff
changeset
|
539 | PurpleSmiley *smiley = NULL; |
|
df274be2afa2
A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents:
37423
diff
changeset
|
540 | const JabberData *jdata = NULL; |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
541 | |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
542 | purple_debug_misc("jabber", "about to add remote smiley %s to the conv", |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
543 | shortcut); |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
544 | |
|
38281
df274be2afa2
A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents:
37423
diff
changeset
|
545 | smiley = purple_conversation_get_smiley(conv, shortcut); |
|
df274be2afa2
A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents:
37423
diff
changeset
|
546 | if(PURPLE_IS_SMILEY(smiley)) { |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
547 | purple_debug_misc("jabber", "smiley was already present"); |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
548 | return; |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
549 | } |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
550 | |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
551 | /* TODO: cache lookup by "cid" */ |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
552 | jdata = jabber_data_find_remote_by_cid(js, from, cid); |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
553 | if (jdata) { |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
554 | purple_debug_info("jabber", "smiley data is already known"); |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
555 | |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
556 | smiley = purple_smiley_new_from_data( |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
557 | shortcut, |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
558 | jabber_data_get_data(jdata), |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
559 | jabber_data_get_size(jdata) |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
560 | ); |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
561 | |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
562 | purple_conversation_add_smiley(conv, smiley); |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
563 | |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
564 | g_object_unref(G_OBJECT(smiley)); |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
565 | } else { |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
566 | JabberMessageRemoteSmileyAddData *data = NULL; |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
567 | |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
568 | data = g_slice_new(JabberMessageRemoteSmileyAddData); |
|
39065
3997b9da75e8
jabber: Fix assignment from incompatible pointer type warning
Mike Ruprecht <cmaiku@gmail.com>
parents:
38358
diff
changeset
|
569 | data->conv = g_object_ref(conv); |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
570 | data->shortcut = g_strdup(shortcut); |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
571 | |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
572 | purple_debug_info("jabber", "smiley data is unknown, " |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
573 | "need to request it"); |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
574 | |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
575 | jabber_data_request(js, cid, from, NULL, FALSE, |
|
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
576 | jabber_message_remote_smiley_got, data); |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
577 | } |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
578 | } |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
579 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
580 | void jabber_message_parse(JabberStream *js, PurpleXmlNode *packet) |
| 7014 | 581 | { |
| 582 | JabberMessage *jm; | |
|
27103
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
583 | const char *id, *from, *to, *type; |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
584 | PurpleXmlNode *child; |
|
27103
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
585 | gboolean signal_return; |
|
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
586 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
587 | from = purple_xmlnode_get_attrib(packet, "from"); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
588 | id = purple_xmlnode_get_attrib(packet, "id"); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
589 | to = purple_xmlnode_get_attrib(packet, "to"); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
590 | type = purple_xmlnode_get_attrib(packet, "type"); |
|
27103
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
591 | |
|
36623
caaadef03507
Renamed purple_connection_get_protocol_info() to purple_connection_get_protocol()
Ankit Vani <a@nevitus.org>
parents:
36545
diff
changeset
|
592 | signal_return = GPOINTER_TO_INT(purple_signal_emit_return_1(purple_connection_get_protocol(js->gc), |
|
27103
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
593 | "jabber-receiving-message", js->gc, type, id, from, to, packet)); |
|
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
594 | if (signal_return) |
|
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
595 | return; |
| 7014 | 596 | |
| 597 | jm = g_new0(JabberMessage, 1); | |
| 598 | jm->js = js; | |
| 599 | jm->sent = time(NULL); | |
|
9584
1a6198375303
[gaim-migrate @ 10427]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9130
diff
changeset
|
600 | jm->delayed = FALSE; |
|
27429
3313d7d74962
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
601 | jm->chat_state = JM_STATE_NONE; |
| 7014 | 602 | |
| 603 | if(type) { | |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
604 | if(purple_strequal(type, "normal")) |
| 7014 | 605 | jm->type = JABBER_MESSAGE_NORMAL; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
606 | else if(purple_strequal(type, "chat")) |
| 7014 | 607 | jm->type = JABBER_MESSAGE_CHAT; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
608 | else if(purple_strequal(type, "groupchat")) |
| 7014 | 609 | jm->type = JABBER_MESSAGE_GROUPCHAT; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
610 | else if(purple_strequal(type, "headline")) |
| 7014 | 611 | jm->type = JABBER_MESSAGE_HEADLINE; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
612 | else if(purple_strequal(type, "error")) |
| 7014 | 613 | jm->type = JABBER_MESSAGE_ERROR; |
| 614 | else | |
| 615 | jm->type = JABBER_MESSAGE_OTHER; | |
| 616 | } else { | |
| 617 | jm->type = JABBER_MESSAGE_NORMAL; | |
| 618 | } | |
| 619 | ||
|
27103
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
620 | jm->from = g_strdup(from); |
|
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
621 | jm->to = g_strdup(to); |
|
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27061
diff
changeset
|
622 | jm->id = g_strdup(id); |
| 7014 | 623 | |
| 624 | for(child = packet->child; child; child = child->next) { | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
625 | const char *xmlns = purple_xmlnode_get_namespace(child); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
626 | if(child->type != PURPLE_XMLNODE_TYPE_TAG) |
| 7014 | 627 | continue; |
| 628 | ||
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
629 | if(purple_strequal(child->name, "error")) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
630 | const char *code = purple_xmlnode_get_attrib(child, "code"); |
|
25154
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
631 | char *code_txt = NULL; |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
632 | char *text = purple_xmlnode_get_data(child); |
|
25154
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
633 | if (!text) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
634 | PurpleXmlNode *enclosed_text_node; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
635 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
636 | if ((enclosed_text_node = purple_xmlnode_get_child(child, "text"))) |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
637 | text = purple_xmlnode_get_data(enclosed_text_node); |
|
25154
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
638 | } |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
639 | |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
640 | if(code) |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
641 | code_txt = g_strdup_printf(_("(Code %s)"), code); |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
642 | |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
643 | if(!jm->error) |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
644 | jm->error = g_strdup_printf("%s%s%s", |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
645 | text ? text : "", |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
646 | text && code_txt ? " " : "", |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
647 | code_txt ? code_txt : ""); |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
648 | |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
649 | g_free(code_txt); |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
650 | g_free(text); |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
651 | } else if (xmlns == NULL) { |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
652 | /* QuLogic: Not certain this is correct, but it would have happened |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
653 | with the previous code. */ |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
654 | if(purple_strequal(child->name, "x")) |
|
25154
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
655 | jm->etc = g_list_append(jm->etc, child); |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
656 | /* The following tests expect xmlns != NULL */ |
|
492b9d6b48a5
Remove a double call to xmlnode_get_namespace and multiple tests for xmlns
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24800
diff
changeset
|
657 | continue; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
658 | } else if(purple_strequal(child->name, "subject") && purple_strequal(xmlns, NS_XMPP_CLIENT)) { |
|
26859
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26711
diff
changeset
|
659 | if(!jm->subject) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
660 | jm->subject = purple_xmlnode_get_data(child); |
|
26859
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26711
diff
changeset
|
661 | if(!jm->subject) |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26711
diff
changeset
|
662 | jm->subject = g_strdup(""); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26711
diff
changeset
|
663 | } |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
664 | } else if(purple_strequal(child->name, "thread") && purple_strequal(xmlns, NS_XMPP_CLIENT)) { |
| 8400 | 665 | if(!jm->thread_id) |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
666 | jm->thread_id = purple_xmlnode_get_data(child); |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
667 | } else if(purple_strequal(child->name, "body") && purple_strequal(xmlns, NS_XMPP_CLIENT)) { |
| 13385 | 668 | if(!jm->body) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
669 | char *msg = purple_xmlnode_get_data(child); |
|
30583
2482f350d8f5
jabber: Fix the last commit to pass escaped text off to the core.
Paul Aurich <darkrain42@pidgin.im>
parents:
30582
diff
changeset
|
670 | char *escaped = purple_markup_escape_text(msg, -1); |
|
2482f350d8f5
jabber: Fix the last commit to pass escaped text off to the core.
Paul Aurich <darkrain42@pidgin.im>
parents:
30582
diff
changeset
|
671 | jm->body = purple_strdup_withhtml(escaped); |
|
2482f350d8f5
jabber: Fix the last commit to pass escaped text off to the core.
Paul Aurich <darkrain42@pidgin.im>
parents:
30582
diff
changeset
|
672 | g_free(escaped); |
| 13385 | 673 | g_free(msg); |
| 674 | } | |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
675 | } else if(purple_strequal(child->name, "html") && purple_strequal(xmlns, NS_XHTML_IM)) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
676 | if(!jm->xhtml && purple_xmlnode_get_child(child, "body")) { |
|
17328
7a5668fb7bad
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@pidgin.im>
parents:
16961
diff
changeset
|
677 | char *c; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
678 | |
|
39433
f033955d125a
Use G_DEFINE_TYPE_WITH_PRIVATE for PurpleConnection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39065
diff
changeset
|
679 | PurpleConnection *gc = js->gc; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
680 | PurpleAccount *account = purple_connection_get_account(gc); |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
681 | PurpleConversation *conv = NULL; |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
682 | GList *smiley_refs = NULL, *it; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
683 | gchar *reformatted_xhtml; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
684 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
685 | if (purple_account_get_bool(account, "custom_smileys", TRUE)) { |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
686 | /* find a list of smileys ("cid" and "alt" text pairs) |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
687 | occuring in the message */ |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
688 | smiley_refs = jabber_message_get_refs_from_xmlnode(child); |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
689 | purple_debug_info("jabber", "found %d smileys\n", |
|
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
690 | g_list_length(smiley_refs)); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
691 | |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27131
diff
changeset
|
692 | if (smiley_refs) { |
|
26711
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
693 | if (jm->type == JABBER_MESSAGE_GROUPCHAT) { |
|
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
694 | JabberID *jid = jabber_id_new(jm->from); |
|
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
695 | JabberChat *chat = NULL; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
696 | |
|
26711
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
697 | if (jid) { |
|
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
698 | chat = jabber_chat_find(js, jid->node, jid->domain); |
|
27782
68314a2ac01b
Break the 'if' onto two lines and don't bother calling jabber_id_free()
Mark Doliner <markdoliner@pidgin.im>
parents:
27750
diff
changeset
|
699 | if (chat) |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
700 | conv = PURPLE_CONVERSATION(chat->conv); |
|
27782
68314a2ac01b
Break the 'if' onto two lines and don't bother calling jabber_id_free()
Mark Doliner <markdoliner@pidgin.im>
parents:
27750
diff
changeset
|
701 | jabber_id_free(jid); |
|
26711
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
702 | } |
|
26867
20bf84d510d8
Only look for and add custom smileys to incoming messages that are going to
Paul Aurich <darkrain42@pidgin.im>
parents:
26859
diff
changeset
|
703 | } else if (jm->type == JABBER_MESSAGE_NORMAL || |
|
20bf84d510d8
Only look for and add custom smileys to incoming messages that are going to
Paul Aurich <darkrain42@pidgin.im>
parents:
26859
diff
changeset
|
704 | jm->type == JABBER_MESSAGE_CHAT) { |
|
26711
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
705 | conv = |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
706 | purple_conversations_find_with_account(from, account); |
|
26711
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
707 | if (!conv) { |
|
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
708 | /* we need to create the conversation here */ |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
709 | conv = PURPLE_CONVERSATION( |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
710 | purple_im_conversation_new(account, from)); |
|
26711
07cfe1520055
Only pre-create a PurpleConversation (if there was none yet) if an incoming
Marcus Lundblad <malu@pidgin.im>
parents:
26687
diff
changeset
|
711 | } |
|
24257
d6402f066933
Fixed a memory error, which was due to me destroying some hashtables in the
Marcus Lundblad <malu@pidgin.im>
parents:
24254
diff
changeset
|
712 | } |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
713 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
714 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
715 | /* process any newly provided smileys */ |
|
29912
4f8e1c3bbc4a
jabber: Cache incoming BoB object per JID (and local JID) instead of discarding
Marcus Lundblad <malu@pidgin.im>
parents:
29910
diff
changeset
|
716 | jabber_message_add_remote_smileys(js, to, packet); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
717 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
718 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
719 | purple_xmlnode_strip_prefixes(child); |
|
32323
df78cc32b2cd
jabber: Strip element prefixes on XHTML-IM content.
Paul Aurich <darkrain42@pidgin.im>
parents:
32277
diff
changeset
|
720 | |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
721 | /* reformat xhtml so that img tags with a "cid:" src gets |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
722 | translated to the bare text of the emoticon (the "alt" attrib) */ |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
723 | /* this is done also when custom smiley retrieval is turned off, |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
724 | this way the receiver always sees the shortcut instead */ |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
725 | reformatted_xhtml = |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
726 | jabber_message_xml_to_string_strip_img_smileys(child); |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
727 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
728 | jm->xhtml = reformatted_xhtml; |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
729 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
730 | /* add known custom emoticons to the conversation */ |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
731 | /* note: if there were no smileys in the incoming message, or |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
732 | if receiving custom smileys is turned off, smiley_refs will |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
733 | be NULL */ |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
734 | for (it = smiley_refs; it; it = g_list_next(it)) { |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
735 | JabberSmileyRef *ref = it->data; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
736 | |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
737 | if (conv) { |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
738 | jabber_message_remote_smiley_add(js, |
|
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
739 | conv, from, ref->alt, ref->cid); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
740 | } |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
741 | |
|
24387
cba0cfba936e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24386
diff
changeset
|
742 | g_free(ref->cid); |
|
cba0cfba936e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24386
diff
changeset
|
743 | g_free(ref->alt); |
|
cba0cfba936e
Another memory leak fix. Also, keep a copy of the alt-text in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24386
diff
changeset
|
744 | g_free(ref); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
745 | } |
|
35746
e4a656378516
Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35745
diff
changeset
|
746 | g_list_free(smiley_refs); |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
747 | |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
748 | /* Convert all newlines to whitespace. Technically, even regular, non-XML HTML is supposed to ignore newlines, but Pidgin has, as convention |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
749 | * treated \n as a newline for compatibility with other protocols |
|
17328
7a5668fb7bad
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@pidgin.im>
parents:
16961
diff
changeset
|
750 | */ |
|
7a5668fb7bad
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@pidgin.im>
parents:
16961
diff
changeset
|
751 | for (c = jm->xhtml; *c != '\0'; c++) { |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
752 | if (*c == '\n') |
|
17328
7a5668fb7bad
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@pidgin.im>
parents:
16961
diff
changeset
|
753 | *c = ' '; |
|
7a5668fb7bad
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@pidgin.im>
parents:
16961
diff
changeset
|
754 | } |
|
7a5668fb7bad
Convert newlines to ' ' when receiving XHTML from Jabber
Sean Egan <seanegan@pidgin.im>
parents:
16961
diff
changeset
|
755 | } |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
756 | } else if(purple_strequal(child->name, "active") && purple_strequal(xmlns,"http://jabber.org/protocol/chatstates")) { |
| 13708 | 757 | jm->chat_state = JM_STATE_ACTIVE; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
758 | } else if(purple_strequal(child->name, "composing") && purple_strequal(xmlns,"http://jabber.org/protocol/chatstates")) { |
| 13708 | 759 | jm->chat_state = JM_STATE_COMPOSING; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
760 | } else if(purple_strequal(child->name, "paused") && purple_strequal(xmlns,"http://jabber.org/protocol/chatstates")) { |
| 13708 | 761 | jm->chat_state = JM_STATE_PAUSED; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
762 | } else if(purple_strequal(child->name, "inactive") && purple_strequal(xmlns,"http://jabber.org/protocol/chatstates")) { |
| 13708 | 763 | jm->chat_state = JM_STATE_INACTIVE; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
764 | } else if(purple_strequal(child->name, "gone") && purple_strequal(xmlns,"http://jabber.org/protocol/chatstates")) { |
| 13708 | 765 | jm->chat_state = JM_STATE_GONE; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
766 | } else if(purple_strequal(child->name, "event") && purple_strequal(xmlns,"http://jabber.org/protocol/pubsub#event")) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
767 | PurpleXmlNode *items; |
|
17779
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17776
diff
changeset
|
768 | jm->type = JABBER_MESSAGE_EVENT; |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
769 | for(items = purple_xmlnode_get_child(child,"items"); items; items = items->next) |
|
17779
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17776
diff
changeset
|
770 | jm->eventitems = g_list_append(jm->eventitems, items); |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
771 | } else if(purple_strequal(child->name, "attention") && purple_strequal(xmlns, NS_ATTENTION)) { |
|
17822
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
772 | jm->hasBuzz = TRUE; |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
773 | } else if(purple_strequal(child->name, "delay") && purple_strequal(xmlns, NS_DELAYED_DELIVERY)) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
774 | const char *timestamp = purple_xmlnode_get_attrib(child, "stamp"); |
|
17811
d9a7ec9277f6
Implemented XEP-0203: Delayed Delivery
Andreas Monitzer <am@adiumx.com>
parents:
17792
diff
changeset
|
775 | jm->delayed = TRUE; |
|
d9a7ec9277f6
Implemented XEP-0203: Delayed Delivery
Andreas Monitzer <am@adiumx.com>
parents:
17792
diff
changeset
|
776 | if(timestamp) |
|
d9a7ec9277f6
Implemented XEP-0203: Delayed Delivery
Andreas Monitzer <am@adiumx.com>
parents:
17792
diff
changeset
|
777 | jm->sent = purple_str_to_time(timestamp, TRUE, NULL, NULL, NULL); |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
778 | } else if(purple_strequal(child->name, "x")) { |
|
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
779 | if(purple_strequal(xmlns, NS_DELAYED_DELIVERY_LEGACY)) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
780 | const char *timestamp = purple_xmlnode_get_attrib(child, "stamp"); |
|
27434
7d8b32345d10
disapproval of revision '0c1545afc98299c6d7004554eb7443091d42e8ca'
Paul Aurich <darkrain42@pidgin.im>
parents:
27431
diff
changeset
|
781 | jm->delayed = TRUE; |
|
7d8b32345d10
disapproval of revision '0c1545afc98299c6d7004554eb7443091d42e8ca'
Paul Aurich <darkrain42@pidgin.im>
parents:
27431
diff
changeset
|
782 | if(timestamp) |
|
7d8b32345d10
disapproval of revision '0c1545afc98299c6d7004554eb7443091d42e8ca'
Paul Aurich <darkrain42@pidgin.im>
parents:
27431
diff
changeset
|
783 | jm->sent = purple_str_to_time(timestamp, TRUE, NULL, NULL, NULL); |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
784 | } else if(purple_strequal(xmlns, "jabber:x:conference") && |
| 11230 | 785 | jm->type != JABBER_MESSAGE_GROUPCHAT_INVITE && |
| 786 | jm->type != JABBER_MESSAGE_ERROR) { | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
787 | const char *jid = purple_xmlnode_get_attrib(child, "jid"); |
| 7014 | 788 | if(jid) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
789 | const char *reason = purple_xmlnode_get_attrib(child, "reason"); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
790 | const char *password = purple_xmlnode_get_attrib(child, "password"); |
|
28703
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
791 | |
| 7014 | 792 | jm->type = JABBER_MESSAGE_GROUPCHAT_INVITE; |
| 793 | g_free(jm->to); | |
| 794 | jm->to = g_strdup(jid); | |
|
28703
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
795 | |
|
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
796 | if (reason) { |
|
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
797 | g_free(jm->body); |
|
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
798 | jm->body = g_strdup(reason); |
|
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
799 | } |
|
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
800 | |
|
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
801 | if (password) { |
|
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
802 | g_free(jm->password); |
|
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
803 | jm->password = g_strdup(password); |
|
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
804 | } |
| 7014 | 805 | } |
|
38258
9a6551eba09c
Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38256
diff
changeset
|
806 | } else if(purple_strequal(xmlns, "http://jabber.org/protocol/muc#user") && |
| 11230 | 807 | jm->type != JABBER_MESSAGE_ERROR) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
808 | PurpleXmlNode *invite = purple_xmlnode_get_child(child, "invite"); |
| 7014 | 809 | if(invite) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
810 | PurpleXmlNode *reason, *password; |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
811 | const char *jid = purple_xmlnode_get_attrib(invite, "from"); |
| 7014 | 812 | g_free(jm->to); |
| 813 | jm->to = jm->from; | |
| 814 | jm->from = g_strdup(jid); | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
815 | if((reason = purple_xmlnode_get_child(invite, "reason"))) { |
| 7014 | 816 | g_free(jm->body); |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
817 | jm->body = purple_xmlnode_get_data(reason); |
| 7014 | 818 | } |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
819 | if((password = purple_xmlnode_get_child(child, "password"))) { |
|
28703
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
820 | g_free(jm->password); |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
821 | jm->password = purple_xmlnode_get_data(password); |
|
28703
521344e75710
jabber: Improved support for XEP-0249 (and document the legacy stuff).
Paul Aurich <darkrain42@pidgin.im>
parents:
28534
diff
changeset
|
822 | } |
| 7014 | 823 | |
| 824 | jm->type = JABBER_MESSAGE_GROUPCHAT_INVITE; | |
| 825 | } | |
| 7145 | 826 | } else { |
| 827 | jm->etc = g_list_append(jm->etc, child); | |
| 7014 | 828 | } |
|
38256
035f00c4fd87
Replace misused g_str_equal() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
31512
diff
changeset
|
829 | } else if (purple_strequal(child->name, "query")) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
830 | const char *node = purple_xmlnode_get_attrib(child, "node"); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28979
diff
changeset
|
831 | if (purple_strequal(xmlns, NS_DISCO_ITEMS) |
|
26871
d62964222795
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <darkrain42@pidgin.im>
parents:
26867
diff
changeset
|
832 | && purple_strequal(node, "http://jabber.org/protocol/commands")) { |
|
d62964222795
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <darkrain42@pidgin.im>
parents:
26867
diff
changeset
|
833 | jabber_adhoc_got_list(js, jm->from, child); |
|
d62964222795
Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <darkrain42@pidgin.im>
parents:
26867
diff
changeset
|
834 | } |
| 7014 | 835 | } |
| 836 | } | |
| 837 | ||
|
17822
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
838 | if(jm->hasBuzz) |
|
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
839 | handle_buzz(jm); |
| 7014 | 840 | |
| 841 | switch(jm->type) { | |
|
27900
23b6b4dfeb82
Allow fallback for broken XMPP <message/> types. Closes #7837.
Paul Aurich <darkrain42@pidgin.im>
parents:
27844
diff
changeset
|
842 | case JABBER_MESSAGE_OTHER: |
|
28828
7c1855f037e7
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents:
28726
diff
changeset
|
843 | purple_debug_info("jabber", |
|
27900
23b6b4dfeb82
Allow fallback for broken XMPP <message/> types. Closes #7837.
Paul Aurich <darkrain42@pidgin.im>
parents:
27844
diff
changeset
|
844 | "Received message of unknown type: %s\n", type); |
|
23b6b4dfeb82
Allow fallback for broken XMPP <message/> types. Closes #7837.
Paul Aurich <darkrain42@pidgin.im>
parents:
27844
diff
changeset
|
845 | /* Fall-through is intentional */ |
| 7014 | 846 | case JABBER_MESSAGE_NORMAL: |
| 847 | case JABBER_MESSAGE_CHAT: | |
| 7145 | 848 | handle_chat(jm); |
| 849 | break; | |
| 7014 | 850 | case JABBER_MESSAGE_HEADLINE: |
| 7145 | 851 | handle_headline(jm); |
| 7014 | 852 | break; |
| 853 | case JABBER_MESSAGE_GROUPCHAT: | |
| 854 | handle_groupchat(jm); | |
| 855 | break; | |
| 856 | case JABBER_MESSAGE_GROUPCHAT_INVITE: | |
| 857 | handle_groupchat_invite(jm); | |
| 858 | break; | |
|
17779
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17776
diff
changeset
|
859 | case JABBER_MESSAGE_EVENT: |
|
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17776
diff
changeset
|
860 | jabber_handle_event(jm); |
|
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17776
diff
changeset
|
861 | break; |
| 7014 | 862 | case JABBER_MESSAGE_ERROR: |
| 863 | handle_error(jm); | |
| 864 | break; | |
| 865 | } | |
| 866 | jabber_message_free(jm); | |
| 867 | } | |
| 868 | ||
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
869 | static gboolean |
| 29366 | 870 | jabber_conv_support_custom_smileys(JabberStream *js, |
|
40293
c60c4f96749d
Fix some line wrapping
Richard Laager <rlaager@pidgin.im>
parents:
40290
diff
changeset
|
871 | PurpleConversation *conv, const gchar *who) |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
872 | { |
|
24254
2d990726bf92
Updated to use latest spec. in XEP-0231
Marcus Lundblad <malu@pidgin.im>
parents:
23628
diff
changeset
|
873 | JabberBuddy *jb; |
|
27110
05ca719b901b
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <malu@pidgin.im>
parents:
27103
diff
changeset
|
874 | JabberChat *chat; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
875 | |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
876 | if (PURPLE_IS_IM_CONVERSATION(conv)) { |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
877 | jb = jabber_buddy_find(js, who, FALSE); |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
878 | if (jb) { |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
879 | return jabber_buddy_has_capability(jb, NS_BOB); |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
880 | } else { |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
881 | return FALSE; |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
882 | } |
|
35070
d7350d876fda
libpurple: Don't assume a conversation is always an IM or a chat
Ankit Vani <a@nevitus.org>
parents:
34935
diff
changeset
|
883 | } else if (PURPLE_IS_CHAT_CONVERSATION(conv)) { |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
884 | chat = jabber_chat_find_by_conv(PURPLE_CHAT_CONVERSATION(conv)); |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
885 | if (chat) { |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
886 | /* do not attempt to send custom smileys in a MUC with more than |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
887 | 10 people, to avoid getting too many BoB requests */ |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
888 | return jabber_chat_get_num_participants(chat) <= 10 && |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
889 | jabber_chat_all_participants_have_capability(chat, |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
890 | NS_BOB); |
|
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
891 | } else { |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
892 | return FALSE; |
|
34634
90fa70aa7e28
Refactored the jabber protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents:
34625
diff
changeset
|
893 | } |
|
35070
d7350d876fda
libpurple: Don't assume a conversation is always an IM or a chat
Ankit Vani <a@nevitus.org>
parents:
34935
diff
changeset
|
894 | } else { |
|
d7350d876fda
libpurple: Don't assume a conversation is always an IM or a chat
Ankit Vani <a@nevitus.org>
parents:
34935
diff
changeset
|
895 | return FALSE; |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
896 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
897 | } |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
898 | |
|
35788
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
899 | static gboolean |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
900 | jabber_message_smileyify_cb(GString *out, PurpleSmiley *smiley, |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
901 | PurpleConversation *_empty, gpointer _unused) |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
902 | { |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
903 | const gchar *shortcut; |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
904 | const JabberData *data; |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
905 | PurpleXmlNode *smiley_node; |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
906 | gchar *node_xml; |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
907 | |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
908 | shortcut = purple_smiley_get_shortcut(smiley); |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
909 | data = jabber_data_find_local_by_alt(shortcut); |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
910 | |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
911 | if (!data) |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
912 | return FALSE; |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
913 | |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
914 | smiley_node = jabber_data_get_xhtml_im(data, shortcut); |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
915 | node_xml = purple_xmlnode_to_str(smiley_node, NULL); |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
916 | |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
917 | g_string_append(out, node_xml); |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
918 | |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
919 | purple_xmlnode_free(smiley_node); |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
920 | g_free(node_xml); |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
921 | |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
922 | return TRUE; |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
923 | } |
|
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
924 | |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
925 | static char * |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
926 | jabber_message_smileyfy_xhtml(JabberMessage *jm, const char *xhtml) |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
927 | { |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
928 | PurpleAccount *account = purple_connection_get_account(jm->js->gc); |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
929 | GList *found_smileys, *it, *it_next; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
930 | PurpleConversation *conv; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
931 | gboolean has_too_large_smiley = FALSE; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
932 | gchar *smileyfied_xhtml = NULL; |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
933 | |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
934 | conv = purple_conversations_find_with_account(jm->to, account); |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
30744
diff
changeset
|
935 | |
|
35758
87c51487e197
Fix g_slist_remove_link misuse, remove debug printfs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35757
diff
changeset
|
936 | if (!jabber_conv_support_custom_smileys(jm->js, conv, jm->to)) |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
937 | return NULL; |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
938 | |
|
35792
d18a48a68edf
Smiley parser: better symbol names
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35788
diff
changeset
|
939 | found_smileys = purple_smiley_parser_find( |
|
d18a48a68edf
Smiley parser: better symbol names
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35788
diff
changeset
|
940 | purple_smiley_custom_get_list(), xhtml, TRUE); |
|
35758
87c51487e197
Fix g_slist_remove_link misuse, remove debug printfs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35757
diff
changeset
|
941 | if (!found_smileys) |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
942 | return NULL; |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
943 | |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
944 | for (it = found_smileys; it; it = it_next) { |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
945 | PurpleSmiley *smiley = it->data; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
946 | gboolean valid = TRUE; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
947 | |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
948 | it_next = g_list_next(it); |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
949 | |
|
38298
f0a8f63f9312
rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents:
38287
diff
changeset
|
950 | if (purple_image_get_data_size(PURPLE_IMAGE(smiley)) > JABBER_DATA_MAX_SIZE) { |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
951 | has_too_large_smiley = TRUE; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
952 | valid = FALSE; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
953 | purple_debug_warning("jabber", "Refusing to send " |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
954 | "smiley %s (too large, max is %d)", |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
955 | purple_smiley_get_shortcut(smiley), |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
956 | JABBER_DATA_MAX_SIZE); |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
957 | } |
|
29270
642d7a9e5f0a
jabber: Don't print the smiley shortcut in the error message when trying to
Marcus Lundblad <malu@pidgin.im>
parents:
29269
diff
changeset
|
958 | |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
959 | if (!valid) |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
960 | found_smileys = g_list_delete_link(found_smileys, it); |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
961 | } |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
962 | |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
963 | if (has_too_large_smiley) { |
|
36089
c035b9a63457
Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36084
diff
changeset
|
964 | purple_conversation_write_system_message(conv, |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
965 | _("A custom smiley in the message is too large to send."), |
|
36089
c035b9a63457
Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36084
diff
changeset
|
966 | PURPLE_MESSAGE_ERROR); |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
967 | } |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
968 | |
|
35758
87c51487e197
Fix g_slist_remove_link misuse, remove debug printfs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35757
diff
changeset
|
969 | if (!found_smileys) |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
970 | return NULL; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
971 | |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
972 | for (it = found_smileys; it; it = g_list_next(it)) { |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
973 | PurpleSmiley *smiley = it->data; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
974 | const gchar *shortcut = purple_smiley_get_shortcut(smiley); |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
975 | const gchar *mimetype; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
976 | JabberData *jdata; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
977 | |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
978 | /* the object has been sent before */ |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
979 | if (jabber_data_find_local_by_alt(shortcut)) |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
980 | continue; |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
981 | |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
982 | mimetype = purple_image_get_mimetype(PURPLE_IMAGE(smiley)); |
|
35823
268a9d3b3fd7
imgstore: unref xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35792
diff
changeset
|
983 | if (!mimetype) { |
|
268a9d3b3fd7
imgstore: unref xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35792
diff
changeset
|
984 | purple_debug_error("jabber", |
|
268a9d3b3fd7
imgstore: unref xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35792
diff
changeset
|
985 | "unknown mime type for image"); |
|
268a9d3b3fd7
imgstore: unref xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35792
diff
changeset
|
986 | continue; |
|
268a9d3b3fd7
imgstore: unref xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35792
diff
changeset
|
987 | } |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
988 | |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
989 | jdata = jabber_data_create_from_data( |
|
38282
be08ec8b8628
This should finish off the jabber issues with smileys now being an image subclass
Gary Kramlich <grim@reaperworld.com>
parents:
38281
diff
changeset
|
990 | purple_image_get_data(PURPLE_IMAGE(smiley)), |
|
38298
f0a8f63f9312
rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents:
38287
diff
changeset
|
991 | purple_image_get_data_size(PURPLE_IMAGE(smiley)), |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
992 | mimetype, FALSE, jm->js); |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
993 | |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
994 | purple_debug_info("jabber", "cache local smiley alt=%s, cid=%s", |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
995 | shortcut, jabber_data_get_cid(jdata)); |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
996 | jabber_data_associate_local(jdata, shortcut); |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
997 | } |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
998 | |
|
35788
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
999 | g_list_free(found_smileys); |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
1000 | |
|
35792
d18a48a68edf
Smiley parser: better symbol names
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35788
diff
changeset
|
1001 | smileyfied_xhtml = purple_smiley_parser_replace( |
|
d18a48a68edf
Smiley parser: better symbol names
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35788
diff
changeset
|
1002 | purple_smiley_custom_get_list(), xhtml, |
|
35788
afa6d777bc7c
Smileys: avoid breaking (x)html by not replacing smileys inside tags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35787
diff
changeset
|
1003 | jabber_message_smileyify_cb, NULL); |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
1004 | |
|
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35746
diff
changeset
|
1005 | return smileyfied_xhtml; |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1006 | } |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1007 | |
| 7014 | 1008 | void jabber_message_send(JabberMessage *jm) |
| 1009 | { | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1010 | PurpleXmlNode *message, *child; |
| 7014 | 1011 | const char *type = NULL; |
| 1012 | ||
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1013 | message = purple_xmlnode_new("message"); |
| 7014 | 1014 | |
| 1015 | switch(jm->type) { | |
| 1016 | case JABBER_MESSAGE_NORMAL: | |
| 1017 | type = "normal"; | |
| 1018 | break; | |
| 1019 | case JABBER_MESSAGE_CHAT: | |
| 1020 | case JABBER_MESSAGE_GROUPCHAT_INVITE: | |
| 1021 | type = "chat"; | |
| 1022 | break; | |
| 1023 | case JABBER_MESSAGE_HEADLINE: | |
| 1024 | type = "headline"; | |
| 1025 | break; | |
| 1026 | case JABBER_MESSAGE_GROUPCHAT: | |
| 1027 | type = "groupchat"; | |
| 1028 | break; | |
| 1029 | case JABBER_MESSAGE_ERROR: | |
| 1030 | type = "error"; | |
| 1031 | break; | |
| 1032 | case JABBER_MESSAGE_OTHER: | |
|
17779
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17776
diff
changeset
|
1033 | default: |
| 7014 | 1034 | type = NULL; |
| 1035 | break; | |
| 1036 | } | |
| 1037 | ||
| 1038 | if(type) | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1039 | purple_xmlnode_set_attrib(message, "type", type); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25983
diff
changeset
|
1040 | |
| 13484 | 1041 | if (jm->id) |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1042 | purple_xmlnode_set_attrib(message, "id", jm->id); |
| 7014 | 1043 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1044 | purple_xmlnode_set_attrib(message, "to", jm->to); |
| 7014 | 1045 | |
| 8400 | 1046 | if(jm->thread_id) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1047 | child = purple_xmlnode_new_child(message, "thread"); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1048 | purple_xmlnode_insert_data(child, jm->thread_id, -1); |
| 8400 | 1049 | } |
| 1050 | ||
| 27432 | 1051 | child = NULL; |
| 1052 | switch(jm->chat_state) | |
| 1053 | { | |
| 1054 | case JM_STATE_ACTIVE: | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1055 | child = purple_xmlnode_new_child(message, "active"); |
| 27432 | 1056 | break; |
| 1057 | case JM_STATE_COMPOSING: | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1058 | child = purple_xmlnode_new_child(message, "composing"); |
| 27432 | 1059 | break; |
| 1060 | case JM_STATE_PAUSED: | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1061 | child = purple_xmlnode_new_child(message, "paused"); |
| 27432 | 1062 | break; |
| 1063 | case JM_STATE_INACTIVE: | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1064 | child = purple_xmlnode_new_child(message, "inactive"); |
| 27432 | 1065 | break; |
| 1066 | case JM_STATE_GONE: | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1067 | child = purple_xmlnode_new_child(message, "gone"); |
| 27432 | 1068 | break; |
| 1069 | case JM_STATE_NONE: | |
| 1070 | /* yep, nothing */ | |
| 1071 | break; | |
| 7014 | 1072 | } |
| 27432 | 1073 | if(child) |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1074 | purple_xmlnode_set_namespace(child, "http://jabber.org/protocol/chatstates"); |
| 13708 | 1075 | |
| 7014 | 1076 | if(jm->subject) { |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1077 | child = purple_xmlnode_new_child(message, "subject"); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1078 | purple_xmlnode_insert_data(child, jm->subject, -1); |
| 7014 | 1079 | } |
| 1080 | ||
| 1081 | if(jm->body) { | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1082 | child = purple_xmlnode_new_child(message, "body"); |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1083 | purple_xmlnode_insert_data(child, jm->body, -1); |
| 7014 | 1084 | } |
| 1085 | ||
| 1086 | if(jm->xhtml) { | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1087 | if ((child = purple_xmlnode_from_str(jm->xhtml, -1))) { |
|
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1088 | purple_xmlnode_insert_child(message, child); |
| 7014 | 1089 | } else { |
|
28828
7c1855f037e7
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents:
28726
diff
changeset
|
1090 | purple_debug_error("jabber", |
| 7014 | 1091 | "XHTML translation/validation failed, returning: %s\n", |
| 1092 | jm->xhtml); | |
| 1093 | } | |
| 1094 | } | |
| 1095 | ||
| 1096 | jabber_send(jm->js, message); | |
| 1097 | ||
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34728
diff
changeset
|
1098 | purple_xmlnode_free(message); |
| 7014 | 1099 | } |
| 1100 | ||
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1101 | /* |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1102 | * Compare the XHTML and plain strings passed in for "equality". Any HTML markup |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1103 | * other than <br/> (matches a newline) in the XHTML will cause this to return |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1104 | * FALSE. |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1105 | */ |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1106 | static gboolean |
|
40293
c60c4f96749d
Fix some line wrapping
Richard Laager <rlaager@pidgin.im>
parents:
40290
diff
changeset
|
1107 | jabber_xhtml_plain_equal(const char *xhtml_escaped, const char *plain) |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1108 | { |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1109 | int i = 0; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1110 | int j = 0; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1111 | gboolean ret; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1112 | char *xhtml = purple_unescape_html(xhtml_escaped); |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1113 | |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1114 | while (xhtml[i] && plain[j]) { |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1115 | if (xhtml[i] == plain[j]) { |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1116 | i += 1; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1117 | j += 1; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1118 | continue; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1119 | } |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1120 | |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1121 | if (plain[j] == '\n' && !strncmp(xhtml+i, "<br/>", 5)) { |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1122 | i += 5; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1123 | j += 1; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1124 | continue; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1125 | } |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1126 | |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1127 | g_free(xhtml); |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1128 | return FALSE; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1129 | } |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1130 | |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1131 | /* Are we at the end of both strings? */ |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1132 | ret = (xhtml[i] == plain[j]) && (xhtml[i] == '\0'); |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1133 | g_free(xhtml); |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1134 | return ret; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1135 | } |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1136 | |
|
36076
a0e5b68ff4ef
Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35838
diff
changeset
|
1137 | int jabber_message_send_im(PurpleConnection *gc, PurpleMessage *msg) |
| 7014 | 1138 | { |
| 1139 | JabberMessage *jm; | |
| 1140 | JabberBuddy *jb; | |
| 1141 | JabberBuddyResource *jbr; | |
| 7135 | 1142 | char *xhtml; |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1143 | char *tmp; |
| 7306 | 1144 | char *resource; |
|
36098
4951752ad038
Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36092
diff
changeset
|
1145 | const gchar *rcpt = purple_message_get_recipient(msg); |
| 7014 | 1146 | |
|
36098
4951752ad038
Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36092
diff
changeset
|
1147 | if (!rcpt || purple_message_is_empty(msg)) |
| 7014 | 1148 | return 0; |
| 1149 | ||
|
36098
4951752ad038
Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36092
diff
changeset
|
1150 | resource = jabber_get_resource(rcpt); |
|
31512
b1c0ce2787e6
jabber: Verbose printing of the exact message passed in to jabber_message_send_im.
Paul Aurich <darkrain42@pidgin.im>
parents:
31294
diff
changeset
|
1151 | |
|
36098
4951752ad038
Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36092
diff
changeset
|
1152 | jb = jabber_buddy_find(purple_connection_get_protocol_data(gc), rcpt, TRUE); |
| 7306 | 1153 | jbr = jabber_buddy_find_resource(jb, resource); |
| 1154 | ||
| 1155 | g_free(resource); | |
| 7014 | 1156 | |
| 1157 | jm = g_new0(JabberMessage, 1); | |
|
32277
97f16af01a05
Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents:
31512
diff
changeset
|
1158 | jm->js = purple_connection_get_protocol_data(gc); |
| 7014 | 1159 | jm->type = JABBER_MESSAGE_CHAT; |
| 13708 | 1160 | jm->chat_state = JM_STATE_ACTIVE; |
|
36098
4951752ad038
Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36092
diff
changeset
|
1161 | jm->to = g_strdup(rcpt); |
| 13484 | 1162 | jm->id = jabber_get_next_id(jm->js); |
| 13708 | 1163 | |
| 1164 | if(jbr) { | |
| 1165 | if(jbr->thread_id) | |
| 1166 | jm->thread_id = jbr->thread_id; | |
| 1167 | ||
|
27429
3313d7d74962
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1168 | if (jbr->chat_states == JABBER_CHAT_STATES_UNSUPPORTED) |
|
3313d7d74962
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1169 | jm->chat_state = JM_STATE_NONE; |
|
3313d7d74962
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1170 | else { |
| 13708 | 1171 | /* if(JABBER_CHAT_STATES_UNKNOWN == jbr->chat_states) |
| 1172 | jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; */ | |
| 1173 | } | |
| 1174 | } | |
| 7014 | 1175 | |
|
36076
a0e5b68ff4ef
Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35838
diff
changeset
|
1176 | tmp = purple_utf8_strip_unprintables(purple_message_get_contents(msg)); |
|
27237
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27155
diff
changeset
|
1177 | purple_markup_html_to_xhtml(tmp, &xhtml, &jm->body); |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27155
diff
changeset
|
1178 | g_free(tmp); |
|
29229
1fd36e207795
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <darkrain42@pidgin.im>
parents:
28996
diff
changeset
|
1179 | |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1180 | tmp = jabber_message_smileyfy_xhtml(jm, xhtml); |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1181 | if (tmp) { |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1182 | g_free(xhtml); |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1183 | xhtml = tmp; |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1184 | } |
| 7014 | 1185 | |
|
27746
4b3f015977d9
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1186 | /* |
|
4b3f015977d9
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1187 | * For backward compatibility with user expectations or for those not on |
|
4b3f015977d9
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1188 | * the user's roster, allow sending XHTML-IM markup. |
|
4b3f015977d9
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1189 | */ |
|
4b3f015977d9
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1190 | if (!jbr || !jbr->caps.info || |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28979
diff
changeset
|
1191 | jabber_resource_has_capability(jbr, NS_XHTML_IM)) { |
|
27746
4b3f015977d9
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1192 | if (!jabber_xhtml_plain_equal(xhtml, jm->body)) |
|
29229
1fd36e207795
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <darkrain42@pidgin.im>
parents:
28996
diff
changeset
|
1193 | /* Wrap the message in <p/> for great interoperability justice. */ |
|
1fd36e207795
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <darkrain42@pidgin.im>
parents:
28996
diff
changeset
|
1194 | jm->xhtml = g_strdup_printf("<html xmlns='" NS_XHTML_IM "'><body xmlns='" NS_XHTML "'><p>%s</p></body></html>", xhtml); |
|
27746
4b3f015977d9
For contacts who advertise Entity Caps, check for XHTML-IM support. Refs #4650.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1195 | } |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1196 | |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1197 | g_free(xhtml); |
| 7014 | 1198 | |
| 1199 | jabber_message_send(jm); | |
| 1200 | jabber_message_free(jm); | |
| 1201 | return 1; | |
| 1202 | } | |
| 1203 | ||
|
36077
b7328f4317c7
Switch purple_serv_chat_send to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36076
diff
changeset
|
1204 | int jabber_message_send_chat(PurpleConnection *gc, int id, PurpleMessage *msg) |
| 7014 | 1205 | { |
| 1206 | JabberChat *chat; | |
| 1207 | JabberMessage *jm; | |
| 8042 | 1208 | JabberStream *js; |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1209 | char *xhtml; |
|
27110
05ca719b901b
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <malu@pidgin.im>
parents:
27103
diff
changeset
|
1210 | char *tmp; |
| 7014 | 1211 | |
|
36077
b7328f4317c7
Switch purple_serv_chat_send to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36076
diff
changeset
|
1212 | if (!gc || purple_message_is_empty(msg)) |
| 7014 | 1213 | return 0; |
| 1214 | ||
|
32277
97f16af01a05
Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents:
31512
diff
changeset
|
1215 | js = purple_connection_get_protocol_data(gc); |
| 7014 | 1216 | chat = jabber_chat_find_by_id(js, id); |
| 1217 | ||
| 8043 | 1218 | if(!chat) |
| 1219 | return 0; | |
| 1220 | ||
| 9130 | 1221 | jm = g_new0(JabberMessage, 1); |
|
32277
97f16af01a05
Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents:
31512
diff
changeset
|
1222 | jm->js = purple_connection_get_protocol_data(gc); |
| 9130 | 1223 | jm->type = JABBER_MESSAGE_GROUPCHAT; |
| 1224 | jm->to = g_strdup_printf("%s@%s", chat->room, chat->server); | |
| 13484 | 1225 | jm->id = jabber_get_next_id(jm->js); |
| 9130 | 1226 | |
|
36077
b7328f4317c7
Switch purple_serv_chat_send to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36076
diff
changeset
|
1227 | tmp = purple_utf8_strip_unprintables(purple_message_get_contents(msg)); |
|
28534
df58e9ce5eca
Oops, it helps to actually use the stripped message.
Paul Aurich <darkrain42@pidgin.im>
parents:
28442
diff
changeset
|
1228 | purple_markup_html_to_xhtml(tmp, &xhtml, &jm->body); |
|
27237
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27155
diff
changeset
|
1229 | g_free(tmp); |
|
27110
05ca719b901b
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <malu@pidgin.im>
parents:
27103
diff
changeset
|
1230 | tmp = jabber_message_smileyfy_xhtml(jm, xhtml); |
|
05ca719b901b
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <malu@pidgin.im>
parents:
27103
diff
changeset
|
1231 | if (tmp) { |
|
05ca719b901b
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <malu@pidgin.im>
parents:
27103
diff
changeset
|
1232 | g_free(xhtml); |
|
05ca719b901b
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <malu@pidgin.im>
parents:
27103
diff
changeset
|
1233 | xhtml = tmp; |
|
05ca719b901b
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <malu@pidgin.im>
parents:
27103
diff
changeset
|
1234 | } |
| 8858 | 1235 | |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1236 | if (chat->xhtml && !jabber_xhtml_plain_equal(xhtml, jm->body)) |
|
29229
1fd36e207795
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <darkrain42@pidgin.im>
parents:
28996
diff
changeset
|
1237 | /* Wrap the message in <p/> for greater interoperability justice. */ |
|
1fd36e207795
jabber: Wrap XHTML-IM messages in <p/> for greater interoperability justice. Closes #11253
Paul Aurich <darkrain42@pidgin.im>
parents:
28996
diff
changeset
|
1238 | jm->xhtml = g_strdup_printf("<html xmlns='" NS_XHTML_IM "'><body xmlns='" NS_XHTML "'><p>%s</p></body></html>", xhtml); |
|
27061
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1239 | |
|
b1bfbf77cf90
Only include XHTML payload in XMPP message when it's needed. Closes #8738.
Paul Aurich <darkrain42@pidgin.im>
parents:
26984
diff
changeset
|
1240 | g_free(xhtml); |
| 7923 | 1241 | |
| 9130 | 1242 | jabber_message_send(jm); |
| 1243 | jabber_message_free(jm); | |
| 1244 | ||
| 7014 | 1245 | return 1; |
| 1246 | } | |
| 1247 | ||
|
34670
9bd5bd903dc7
Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents:
34634
diff
changeset
|
1248 | unsigned int jabber_send_typing(PurpleConnection *gc, const char *who, PurpleIMTypingState state) |
| 7014 | 1249 | { |
|
30454
4e9bf65cfe9a
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <darkrain42@pidgin.im>
parents:
30239
diff
changeset
|
1250 | JabberStream *js; |
| 7014 | 1251 | JabberMessage *jm; |
| 1252 | JabberBuddy *jb; | |
| 1253 | JabberBuddyResource *jbr; | |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
30744
diff
changeset
|
1254 | char *resource; |
| 7014 | 1255 | |
|
30454
4e9bf65cfe9a
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <darkrain42@pidgin.im>
parents:
30239
diff
changeset
|
1256 | js = purple_connection_get_protocol_data(gc); |
|
4e9bf65cfe9a
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <darkrain42@pidgin.im>
parents:
30239
diff
changeset
|
1257 | jb = jabber_buddy_find(js, who, TRUE); |
|
4e9bf65cfe9a
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <darkrain42@pidgin.im>
parents:
30239
diff
changeset
|
1258 | if (!jb) |
|
4e9bf65cfe9a
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <darkrain42@pidgin.im>
parents:
30239
diff
changeset
|
1259 | return 0; |
|
4e9bf65cfe9a
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <darkrain42@pidgin.im>
parents:
30239
diff
changeset
|
1260 | |
|
4e9bf65cfe9a
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <darkrain42@pidgin.im>
parents:
30239
diff
changeset
|
1261 | resource = jabber_get_resource(who); |
| 7306 | 1262 | jbr = jabber_buddy_find_resource(jb, resource); |
| 1263 | g_free(resource); | |
| 7014 | 1264 | |
|
30235
d37c441d6a48
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <darkrain42@pidgin.im>
parents:
30121
diff
changeset
|
1265 | /* We know this entity doesn't support chat states */ |
|
d37c441d6a48
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <darkrain42@pidgin.im>
parents:
30121
diff
changeset
|
1266 | if (jbr && jbr->chat_states == JABBER_CHAT_STATES_UNSUPPORTED) |
|
d37c441d6a48
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <darkrain42@pidgin.im>
parents:
30121
diff
changeset
|
1267 | return 0; |
|
d37c441d6a48
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <darkrain42@pidgin.im>
parents:
30121
diff
changeset
|
1268 | |
|
d37c441d6a48
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <darkrain42@pidgin.im>
parents:
30121
diff
changeset
|
1269 | /* *If* we don't have presence /and/ the buddy can't see our |
|
d37c441d6a48
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <darkrain42@pidgin.im>
parents:
30121
diff
changeset
|
1270 | * presence, don't send typing notifications. |
|
d37c441d6a48
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <darkrain42@pidgin.im>
parents:
30121
diff
changeset
|
1271 | */ |
|
d37c441d6a48
jabber: Send typing notifications to a buddy when it can see our presence
Paul Aurich <darkrain42@pidgin.im>
parents:
30121
diff
changeset
|
1272 | if (!jbr && !(jb->subscription & JABBER_SUB_FROM)) |
| 7014 | 1273 | return 0; |
| 1274 | ||
| 13708 | 1275 | /* TODO: figure out threading */ |
| 7014 | 1276 | jm = g_new0(JabberMessage, 1); |
|
30454
4e9bf65cfe9a
jabber: Fix a crash when sending typing notifications to a malformed buddy
Paul Aurich <darkrain42@pidgin.im>
parents:
30239
diff
changeset
|
1277 | jm->js = js; |
| 7014 | 1278 | jm->type = JABBER_MESSAGE_CHAT; |
| 1279 | jm->to = g_strdup(who); | |
| 13484 | 1280 | jm->id = jabber_get_next_id(jm->js); |
| 7014 | 1281 | |
|
34670
9bd5bd903dc7
Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents:
34634
diff
changeset
|
1282 | if(PURPLE_IM_TYPING == state) |
| 13708 | 1283 | jm->chat_state = JM_STATE_COMPOSING; |
|
34670
9bd5bd903dc7
Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents:
34634
diff
changeset
|
1284 | else if(PURPLE_IM_TYPED == state) |
| 13708 | 1285 | jm->chat_state = JM_STATE_PAUSED; |
| 1286 | else | |
| 1287 | jm->chat_state = JM_STATE_ACTIVE; | |
| 1288 | ||
|
27429
3313d7d74962
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1289 | /* if(JABBER_CHAT_STATES_UNKNOWN == jbr->chat_states) |
|
3313d7d74962
Remove code for obsoleted XEP-0022 (Message Events)
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1290 | jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; */ |
| 7014 | 1291 | |
| 1292 | jabber_message_send(jm); | |
| 1293 | jabber_message_free(jm); | |
| 1294 | ||
| 13708 | 1295 | return 0; |
| 7014 | 1296 | } |
| 1297 | ||
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23249
diff
changeset
|
1298 | gboolean jabber_buzz_isenabled(JabberStream *js, const gchar *namespace) { |
|
17824
52683dfc1f7d
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents:
17823
diff
changeset
|
1299 | return js->allowBuzz; |
|
52683dfc1f7d
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents:
17823
diff
changeset
|
1300 | } |
|
52683dfc1f7d
Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents:
17823
diff
changeset
|
1301 | |
|
24715
69aaae59e205
Fix compilation errors and many warnings
Paul Aurich <darkrain42@pidgin.im>
parents:
24714
diff
changeset
|
1302 | gboolean jabber_custom_smileys_isenabled(JabberStream *js, const gchar *namespace) |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
1303 | { |
|
39433
f033955d125a
Use G_DEFINE_TYPE_WITH_PRIVATE for PurpleConnection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39065
diff
changeset
|
1304 | PurpleAccount *account = purple_connection_get_account(js->gc); |
|
23627
dbdc407798af
A couple of leak fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23626
diff
changeset
|
1305 | |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
1306 | return purple_account_get_bool(account, "custom_smileys", TRUE); |
|
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23249
diff
changeset
|
1307 | } |