| 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 |