libpurple/purpleconversation.c

changeset 40992
3a973a9c5a64
parent 40948
2c312f084d84
child 41007
90d2dee9b3dc
--- a/libpurple/purpleconversation.c	Thu Jul 22 22:33:54 2021 -0500
+++ b/libpurple/purpleconversation.c	Thu Jul 22 22:34:48 2021 -0500
@@ -32,6 +32,7 @@
 #include "prefs.h"
 #include "protocol.h"
 #include "purpleconversation.h"
+#include "purpleconversationmanager.h"
 #include "purplemarkup.h"
 #include "purpleprivate.h"
 #include "purpleprotocolclient.h"
@@ -288,6 +289,7 @@
 	PurpleConversation *conv = PURPLE_CONVERSATION(object);
 	PurpleAccount *account;
 	PurpleConnection *gc;
+	PurpleConversationManager *manager;
 	PurpleConversationUiOps *ops;
 
 	G_OBJECT_CLASS(purple_conversation_parent_class)->constructed(object);
@@ -299,7 +301,8 @@
 	purple_conversation_set_features(conv, purple_connection_get_flags(gc));
 
 	/* add the conversation to the appropriate lists */
-	purple_conversations_add(conv);
+	manager = purple_conversation_manager_get_default();
+	purple_conversation_manager_register(manager, conv);
 
 	/* Auto-set the title. */
 	purple_conversation_autoset_title(conv);
@@ -328,6 +331,7 @@
 static void
 purple_conversation_finalize(GObject *object) {
 	PurpleConversation *conv = PURPLE_CONVERSATION(object);
+	PurpleConversationManager *manager;
 	PurpleConversationPrivate *priv =
 			purple_conversation_get_instance_private(conv);
 	PurpleConversationUiOps *ops  = purple_conversation_get_ui_ops(conv);
@@ -335,7 +339,8 @@
 	purple_request_close_with_handle(conv);
 
 	/* remove from conversations and im/chats lists prior to emit */
-	purple_conversations_remove(conv);
+	manager = purple_conversation_manager_get_default();
+	purple_conversation_manager_unregister(manager, conv);
 
 	purple_signal_emit(purple_conversations_get_handle(),
 	                   "deleting-conversation", conv);
@@ -682,7 +687,10 @@
 			return;
 		}
 	} else if(PURPLE_IS_IM_CONVERSATION(conv)) {
-		if(!g_list_find(purple_conversations_get_all(), conv)) {
+		PurpleConversationManager *manager = NULL;
+
+		manager = purple_conversation_manager_get_default();
+		if(!purple_conversation_manager_is_registered(manager, conv)) {
 			return;
 		}
 	}
@@ -852,14 +860,17 @@
                                   const gchar *what)
 {
 	PurpleConversation *conv;
+	PurpleConversationManager *manager;
 
 	g_return_val_if_fail(who != NULL, FALSE);
 	g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), FALSE);
 	g_return_val_if_fail(what != NULL, FALSE);
 
-	conv = purple_conversations_find_with_account(who, account);
-	if(conv != NULL) {
-		purple_conversation_write_system_message(conv, what, PURPLE_MESSAGE_ERROR);
+	manager = purple_conversation_manager_get_default();
+	conv = purple_conversation_manager_find(manager, account, who);
+	if(PURPLE_IS_CONVERSATION(conv)) {
+		purple_conversation_write_system_message(conv, what,
+		                                         PURPLE_MESSAGE_ERROR);
 		return TRUE;
 	}
 

mercurial