Implement Purple.ProtocolConversation.leave_async and .leave_finish in the Demo protocol plugin

Tue, 10 Sep 2024 00:23:13 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 10 Sep 2024 00:23:13 -0500
changeset 42924
8091ed36e8b0
parent 42923
09fb857fb48c
child 42925
3c9b77d62b0d

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

mercurial