# HG changeset patch # User Gary Kramlich # Date 1725945793 18000 # Node ID 8091ed36e8b0b8f0e4f7904e49000f8003919f42 # Parent 09fb857fb48c2b225e23245bd1b064827ae7787c Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin Testing Done: Opened a conversation with `Echo` and was able to close it. Bugs closed: PIDGIN-17932 Reviewed at https://reviews.imfreedom.org/r/3467/ diff -r 09fb857fb48c -r 8091ed36e8b0 protocols/demo/purpledemoprotocolconversation.c --- a/protocols/demo/purpledemoprotocolconversation.c Tue Sep 10 00:16:26 2024 -0500 +++ b/protocols/demo/purpledemoprotocolconversation.c Tue Sep 10 00:23:13 2024 -0500 @@ -189,6 +189,35 @@ } static void +purple_demo_protocol_conversation_leave_conversation_async(PurpleProtocolConversation *protocol, + G_GNUC_UNUSED PurpleConversation *conversation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer data) +{ + GTask *task = NULL; + + task = g_task_new(protocol, cancellable, callback, data); + g_task_set_source_tag(task, + purple_demo_protocol_conversation_leave_conversation_async); + + g_task_return_boolean(task, TRUE); + g_clear_object(&task); +} + +static gboolean +purple_demo_protocol_conversation_leave_conversation_finish(G_GNUC_UNUSED PurpleProtocolConversation *protocol, + GAsyncResult *result, + GError **error) +{ + gpointer tag = purple_demo_protocol_conversation_leave_conversation_async; + + g_return_val_if_fail(g_async_result_is_tagged(result, tag), FALSE); + + return g_task_propagate_boolean(G_TASK(result), error); +} + +static void purple_demo_protocol_send_message_async(G_GNUC_UNUSED PurpleProtocolConversation *protocol, PurpleConversation *conversation, PurpleMessage *message, @@ -283,6 +312,11 @@ iface->create_conversation_finish = purple_demo_protocol_create_conversation_finish; + iface->leave_conversation_async = + purple_demo_protocol_conversation_leave_conversation_async; + iface->leave_conversation_finish = + purple_demo_protocol_conversation_leave_conversation_finish; + iface->send_message_async = purple_demo_protocol_send_message_async; iface->send_message_finish = purple_demo_protocol_send_message_finish; }