protocols/ircv3/purpleircv3messagehandlers.c

changeset 42920
897667cab3ce
parent 42896
5c8f4a455d3c
child 42925
3c9b77d62b0d
equal deleted inserted replaced
42919:bcd046ee00ed 42920:897667cab3ce
163 163
164 params = ibis_message_get_params(ibis_message); 164 params = ibis_message_get_params(ibis_message);
165 tags = ibis_message_get_tags(ibis_message); 165 tags = ibis_message_get_tags(ibis_message);
166 166
167 if(params == NULL) { 167 if(params == NULL) {
168 g_warning("privmsg received with no parameters"); 168 g_warning("tagmsg received with no parameters");
169 169
170 return FALSE; 170 return FALSE;
171 } 171 }
172 172
173 if(g_strv_length(params) != 1) { 173 if(g_strv_length(params) != 1) {
226 PurpleIRCv3Connection *connection = data; 226 PurpleIRCv3Connection *connection = data;
227 PurpleContact *contact = NULL; 227 PurpleContact *contact = NULL;
228 PurpleConversation *conversation = NULL; 228 PurpleConversation *conversation = NULL;
229 PurpleMessage *message = NULL; 229 PurpleMessage *message = NULL;
230 GDateTime *dt = NULL; 230 GDateTime *dt = NULL;
231 IbisCTCPMessage *ctcp_message = NULL;
231 IbisTags *tags = NULL; 232 IbisTags *tags = NULL;
232 GStrv params = NULL; 233 GStrv params = NULL;
233 char *stripped = NULL;
234 const char *target = NULL; 234 const char *target = NULL;
235 235
236 params = ibis_message_get_params(ibis_message); 236 params = ibis_message_get_params(ibis_message);
237 ctcp_message = ibis_message_get_ctcp_message(ibis_message);
237 tags = ibis_message_get_tags(ibis_message); 238 tags = ibis_message_get_tags(ibis_message);
238 239
239 if(params == NULL) { 240 if(params == NULL) {
240 g_warning("privmsg received with no parameters"); 241 g_warning("privmsg received with no parameters");
241 242
263 conversation = purple_ircv3_connection_find_or_create_conversation(connection, 264 conversation = purple_ircv3_connection_find_or_create_conversation(connection,
264 target); 265 target);
265 266
266 purple_ircv3_add_contact_to_conversation(contact, conversation); 267 purple_ircv3_add_contact_to_conversation(contact, conversation);
267 268
268 stripped = ibis_formatting_strip(params[1]); 269 if(IBIS_IS_CTCP_MESSAGE(ctcp_message)) {
269 message = purple_message_new(PURPLE_CONTACT_INFO(contact), stripped); 270 if(ibis_ctcp_message_is_command(ctcp_message, IBIS_CTCP_ACTION)) {
270 g_clear_pointer(&stripped, g_free); 271 GStrv ctcp_params = NULL;
272 char *ctcp_body = NULL;
273 char *stripped = NULL;
274
275 ctcp_params = ibis_ctcp_message_get_params(ctcp_message);
276 ctcp_body = g_strjoinv(" ", ctcp_params);
277 stripped = ibis_formatting_strip(ctcp_body);
278 g_free(ctcp_body);
279
280 message = purple_message_new(PURPLE_CONTACT_INFO(contact),
281 stripped);
282 g_free(stripped);
283
284 purple_message_set_action(message, TRUE);
285 }
286 }
287
288 if(!PURPLE_IS_MESSAGE(message)) {
289 char *stripped = NULL;
290
291 stripped = ibis_formatting_strip(params[1]);
292 message = purple_message_new(PURPLE_CONTACT_INFO(contact), stripped);
293 g_clear_pointer(&stripped, g_free);
294 }
295
271 296
272 if(purple_strequal(command, IBIS_MSG_NOTICE)) { 297 if(purple_strequal(command, IBIS_MSG_NOTICE)) {
273 purple_message_set_notice(message, TRUE); 298 purple_message_set_notice(message, TRUE);
274 } 299 }
275 300

mercurial