--- a/libpurple/protocols/demo/purpledemoprotocol.c Fri Mar 11 02:22:36 2022 -0600
+++ b/libpurple/protocols/demo/purpledemoprotocol.c Fri Mar 11 03:29:48 2022 -0600
@@ -29,6 +29,69 @@
/******************************************************************************
+ * PurpleProtocolIM Implementation + *****************************************************************************/ + PurpleConnection *connection; + PurpleMessage *message; +} PurpleDemoProtocolIMInfo; +purple_demo_protocol_im_info_free(PurpleDemoProtocolIMInfo *info) { + g_object_unref(info->message); +purple_demo_protocol_echo_im_cb(gpointer data) + PurpleDemoProtocolIMInfo *info = data; + const char *who = NULL; + PurpleMessageFlags flags; + GDateTime *timestamp = NULL; + /* Turn outgoing message back incoming. */ + who = purple_message_get_recipient(info->message); + flags = purple_message_get_flags(info->message); + flags &= ~PURPLE_MESSAGE_SEND; + flags |= PURPLE_MESSAGE_RECV; + timestamp = purple_message_get_timestamp(info->message); + purple_serv_got_im(info->connection, who, + purple_message_get_contents(info->message), flags, + g_date_time_to_unix(timestamp)); + g_date_time_unref(timestamp); +purple_demo_protocol_send_im(PurpleProtocolIM *im, PurpleConnection *conn, + const gchar *who = purple_message_get_recipient(msg); + if(purple_strequal(who, "Echo")) { + PurpleDemoProtocolIMInfo *info = g_new(PurpleDemoProtocolIMInfo, 1); + info->connection = conn; + info->message = g_object_ref(msg); + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, + purple_demo_protocol_echo_im_cb, info, + (GDestroyNotify)purple_demo_protocol_im_info_free); +purple_demo_protocol_im_iface_init(PurpleProtocolIMInterface *iface) { + iface->send = purple_demo_protocol_send_im; +/****************************************************************************** * PurpleProtocolClient Implementation
*****************************************************************************/
@@ -107,6 +170,8 @@
G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_CLIENT,
purple_demo_protocol_client_init)
+ G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_IM, + purple_demo_protocol_im_iface_init) --- a/libpurple/protocols/demo/resources/contacts.json Fri Mar 11 02:22:36 2022 -0600
+++ b/libpurple/protocols/demo/resources/contacts.json Fri Mar 11 03:29:48 2022 -0600
@@ -43,5 +43,14 @@
"message": "Writing crazy patches!"
+ "message": "Cursed to speak the last words spoken to me" --- a/libpurple/protocols/demo/resources/purpledemo.gresource.xml Fri Mar 11 02:22:36 2022 -0600
+++ b/libpurple/protocols/demo/resources/purpledemo.gresource.xml Fri Mar 11 03:29:48 2022 -0600
@@ -6,6 +6,7 @@
<file>icons/22x22/apps/im-purple-demo.png</file>
<file>icons/48x48/apps/im-purple-demo.png</file>
<file>icons/scalable/apps/im-purple-demo.svg</file>
+ <file>buddy_icons/Echo.png</file> <file>buddy_icons/Eion.png</file>
<file>buddy_icons/Elliott.png</file>
<file>buddy_icons/Gary.png</file>