Update the unity plugin for the PurpleConversationManager API

Fri, 30 Jul 2021 03:31:35 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 30 Jul 2021 03:31:35 -0500
changeset 41002
717c8a3f95a3
parent 41001
73878ef1fccf
child 41003
9b97fe2dcdac

Update the unity plugin for the PurpleConversationManager API

Testing Done:
Compiled and tested it under Unity. Didn't notice much as configuration is broken and Unity did not like the graphics of my vm and kept not repainting the screen.

Reviewed at https://reviews.imfreedom.org/r/857/

pidgin/plugins/unity.c file | annotate | diff | comparison | revisions
--- a/pidgin/plugins/unity.c	Thu Jul 29 23:36:13 2021 -0500
+++ b/pidgin/plugins/unity.c	Fri Jul 30 03:31:35 2021 -0500
@@ -61,10 +61,16 @@
 		return;
 
 	if (launcher_count == LAUNCHER_COUNT_MESSAGES) {
-		for (convs = purple_conversations_get_all(); convs != NULL; convs = convs->next) {
+		PurpleConversationManager *manager = NULL;
+
+		manager = purple_conversation_manager_get_default();
+		convs = purple_conversation_manager_get_all(manager);
+
+		while(convs != NULL) {
 			PurpleConversation *conv = convs->data;
 			count += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(conv),
 					"unity-message-count"));
+			convs = g_list_delete_link(convs, convs);
 		}
 	} else {
 		count = n_sources;
@@ -125,13 +131,17 @@
 static void
 refill_messaging_menu()
 {
+	PurpleConversationManager *manager = NULL;
 	GList *convs;
 
-	for (convs = purple_conversations_get_all(); convs != NULL; convs = convs->next) {
+	manager = purple_conversation_manager_get_default();
+	convs = purple_conversation_manager_get_all(manager);
+	while(convs != NULL) {
 		PurpleConversation *conv = convs->data;
 		messaging_menu_add_conversation(conv,
 			GPOINTER_TO_INT(g_object_get_data(G_OBJECT(conv),
 			"unity-message-count")));
+		convs = g_list_delete_link(convs, convs);
 	}
 }
 
@@ -199,18 +209,28 @@
 static void
 im_sent_im(PurpleAccount *account, PurpleMessage *msg, gpointer _unused)
 {
-	PurpleIMConversation *im = NULL;
-	im = purple_conversations_find_im_with_account(
-		purple_message_get_recipient(msg), account);
-	unalert(PURPLE_CONVERSATION(im));
+	PurpleConversation *im = NULL;
+	PurpleConversationManager *manager = NULL;
+
+	manager = purple_conversation_manager_get_default();
+
+	im = purple_conversation_manager_find_im(manager, account,
+	                                         purple_message_get_recipient(msg));
+
+	unalert(im);
 }
 
 static void
 chat_sent_im(PurpleAccount *account, PurpleMessage *msg, int id)
 {
-	PurpleChatConversation *chat = NULL;
-	chat = purple_conversations_find_chat(purple_account_get_connection(account), id);
-	unalert(PURPLE_CONVERSATION(chat));
+	PurpleConversation *chat = NULL;
+	PurpleConversationManager *manager = NULL;
+
+	manager = purple_conversation_manager_get_default();
+
+	chat = purple_conversation_manager_find_chat_by_id(manager, account, id);
+
+	unalert(chat);
 }
 
 static void
@@ -234,6 +254,7 @@
 {
 	gchar **sections = g_strsplit(id, ":", 0);
 	PurpleConversation *conv = NULL;
+	PurpleConversationManager *manager = NULL;
 	PurpleAccount *account;
 	PidginConvWindow *purplewin = NULL;
 
@@ -242,14 +263,17 @@
 	char *aname    = sections[2];
 	char *protocol = sections[3];
 
+	manager = purple_conversation_manager_get_default();
+
 	account = purple_accounts_find(aname, protocol);
 
-	if (g_strcmp0(type, "im") == 0)
-		conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(cname, account));
-	else if (g_strcmp0(type, "chat") == 0)
-		conv = PURPLE_CONVERSATION(purple_conversations_find_chat_with_account(cname, account));
-	else
-		conv = purple_conversations_find_with_account(cname, account);
+	if (g_strcmp0(type, "im") == 0) {
+		conv = purple_conversation_manager_find_im(manager, account, cname);
+	} else if (g_strcmp0(type, "chat") == 0) {
+		conv = purple_conversation_manager_find_chat(manager, account, cname);
+	} else {
+		conv = purple_conversation_manager_find(manager, account, cname);
+	}
 
 	if (conv) {
 		unalert(conv);
@@ -530,7 +554,8 @@
 
 static gboolean
 unity_load(GPluginPlugin *plugin, GError **error) {
-	GList *convs = purple_conversations_get_all();
+	GList *convs = NULL;
+	PurpleConversationManager *manager = NULL;
 	PurpleSavedStatus *saved_status;
 	void *conv_handle = purple_conversations_get_handle();
 	void *gtk_conv_handle = pidgin_conversations_get_handle();
@@ -577,10 +602,12 @@
 	purple_signal_connect(conv_handle, "deleting-conversation", plugin,
 			PURPLE_CALLBACK(deleting_conv), NULL);
 
-	while (convs) {
-		PurpleConversation *conv = (PurpleConversation *)convs->data;
+	manager = purple_conversation_manager_get_default();
+	convs = purple_conversation_manager_get_all(manager);
+	while(convs != NULL) {
+		PurpleConversation *conv = PURPLE_CONVERSATION(convs->data);
 		attach_signals(conv);
-		convs = convs->next;
+		convs = g_list_delete_link(convs, convs);
 	}
 
 	return TRUE;
@@ -588,12 +615,17 @@
 
 static gboolean
 unity_unload(GPluginPlugin *plugin, GError **error) {
-	GList *convs = purple_conversations_get_all();
-	while (convs) {
-		PurpleConversation *conv = (PurpleConversation *)convs->data;
+	GList *convs = NULL;
+	PurpleConversationManager *manager = NULL;
+
+	manager = purple_conversation_manager_get_default();
+	convs = purple_conversation_manager_get_all(manager);
+
+	while(convs != NULL) {
+		PurpleConversation *conv = PURPLE_CONVERSATION(convs->data);
 		unalert(conv);
 		detach_signals(conv);
-		convs = convs->next;
+		convs = g_list_delete_link(convs, convs);
 	}
 
 	unity_launcher_entry_set_count_visible(launcher, FALSE);

mercurial