Tue, 10 Sep 2024 00:23:13 -0500
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/
| protocols/demo/purpledemoprotocolconversation.c | file | annotate | diff | comparison | revisions |
--- 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; }