Sun, 10 Nov 2024 03:52:11 -0600
IRCv3: Add support for sending CTCP ACTION
Testing Done:
Sent some `/action` commands and verified they showed up properly on the wire and in other clients. When we implement the `/alias` command we will add an alias to `/action` named `/me`.
Reviewed at https://reviews.imfreedom.org/r/3646/
| protocols/ircv3/purpleircv3protocolconversation.c | file | annotate | diff | comparison | revisions |
--- a/protocols/ircv3/purpleircv3protocolconversation.c Sun Nov 10 03:49:39 2024 -0600 +++ b/protocols/ircv3/purpleircv3protocolconversation.c Sun Nov 10 03:52:11 2024 -0600 @@ -47,6 +47,7 @@ IbisClient *client = NULL; IbisMessage *ibis_message = NULL; GTask *task = NULL; + const char *contents = NULL; const char *id = NULL; account = purple_conversation_get_account(conversation); @@ -71,9 +72,20 @@ id = purple_conversation_get_name(conversation); } + contents = purple_message_get_contents(message); + ibis_message = ibis_message_new(IBIS_MSG_PRIVMSG); - ibis_message_set_params(ibis_message, id, - purple_message_get_contents(message), NULL); + if(purple_message_get_action(message)) { + IbisCTCPMessage *ctcp_message = NULL; + + ibis_message_set_params(ibis_message, id, NULL); + + ctcp_message = ibis_ctcp_message_new(IBIS_CTCP_ACTION); + ibis_ctcp_message_set_params(ctcp_message, contents, NULL); + ibis_message_set_ctcp_message(ibis_message, ctcp_message); + } else { + ibis_message_set_params(ibis_message, id, contents, NULL); + } client = purple_ircv3_connection_get_client(v3_connection); ibis_client_write(client, ibis_message);