libpurple/protocols/irc/msgs.c

changeset 40997
997ab408c113
parent 40885
87f6241da196
child 41349
15aeaa1e84ec
--- a/libpurple/protocols/irc/msgs.c	Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/irc/msgs.c	Mon Jul 26 04:13:19 2021 -0500
@@ -130,6 +130,7 @@
 	const char *end, *cur, *numeric = NULL;
 	char *clean, *tmp, *convname;
 	PurpleConversation *convo;
+	PurpleConversationManager *manager;
 
 	for (cur = args[0], i = 0; i < 4; i++) {
 		end = strchr(cur, ' ');
@@ -164,7 +165,8 @@
 	g_free(tmp);
 
 	/* Check for an existing conversation */
-	convo = purple_conversations_find_with_account(convname, irc->account);
+	manager = purple_conversation_manager_get_default();
+	convo = purple_conversation_manager_find(manager, irc->account, convname);
 	g_free(convname);
 
 	if (convo == NULL) {
@@ -259,8 +261,11 @@
 void irc_msg_ban(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 
-	chat = purple_conversations_find_chat_with_account(args[1], irc->account);
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             args[1]);
 
 	if (purple_strequal(name, "367")) {
 		char *msg = NULL;
@@ -308,28 +313,35 @@
 void irc_msg_banfull(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 	char *buf, *nick;
 
-	chat = purple_conversations_find_chat_with_account(args[1], irc->account);
-	if (!chat)
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             args[1]);
+	if (!chat) {
 		return;
+	}
 
 	nick = g_markup_escape_text(args[2], -1);
 	buf = g_strdup_printf(_("Cannot ban %s: banlist is full"), nick);
 	g_free(nick);
-	purple_conversation_write_system_message(chat,
-		buf, PURPLE_MESSAGE_NO_LOG);
+	purple_conversation_write_system_message(chat, buf, PURPLE_MESSAGE_NO_LOG);
 	g_free(buf);
 }
 
 void irc_msg_chanmode(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 	char *buf, *escaped;
 
-	chat = purple_conversations_find_chat_with_account(args[1], irc->account);
-	if (!chat)	/* XXX punt on channels we are not in for now */
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             args[1]);
+	if (!chat) { /* XXX punt on channels we are not in for now */
 		return;
+	}
 
 	escaped = (args[3] != NULL) ? g_markup_escape_text(args[3], -1) : NULL;
 	buf = g_strdup_printf("mode for %s: %s %s", args[1], args[2], escaped ? escaped : "");
@@ -466,13 +478,16 @@
 {
 	if (purple_strequal(name, "352")) {
 		PurpleConversation *chat;
+		PurpleConversationManager *manager;
 		PurpleChatUser *cb;
 
 		char *cur, *userhost, *realname;
 
 		PurpleChatUserFlags flags;
 
-		chat = purple_conversations_find_chat_with_account(args[1], irc->account);
+		manager = purple_conversation_manager_get_default();
+		chat = purple_conversation_manager_find_chat(manager, irc->account,
+		                                             args[1]);
 		if (!chat) {
 			purple_debug_error("irc", "Got a WHO response for %s, which doesn't exist", args[1]);
 			return;
@@ -483,7 +498,7 @@
 			purple_debug_error("irc", "Got a WHO response for %s who isn't a buddy.", args[5]);
 			return;
 		}
-		
+
 		userhost = g_strdup_printf("%s@%s", args[2], args[3]);
 
 		/* The final argument is a :-argument, but annoyingly
@@ -553,6 +568,7 @@
 {
 	char *chan, *topic, *msg, *nick, *tmp, *tmp2;
 	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 
 	if (purple_strequal(name, "topic")) {
 		chan = args[0];
@@ -562,7 +578,8 @@
 		topic = irc_mirc2txt (args[2]);
 	}
 
-	chat = purple_conversations_find_chat_with_account(chan, irc->account);
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account, chan);
 	if (!chat) {
 		purple_debug_error("irc", "Got a topic for %s, which doesn't exist", chan);
 		g_free(topic);
@@ -606,11 +623,14 @@
 void irc_msg_topicinfo(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 	GDateTime *dt, *local;
 	gint64 mtime;
 	char *msg, *timestamp, *datestamp;
 
-	chat = purple_conversations_find_chat_with_account(args[1], irc->account);
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             args[1]);
 	if (!chat) {
 		purple_debug_error("irc", "Got topic info for %s, which doesn't exist", args[1]);
 		return;
@@ -659,10 +679,14 @@
 void irc_msg_names(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	char *names, *cur, *end, *tmp, *msg;
-	PurpleConversation *convo;
 
 	if (purple_strequal(name, "366")) {
-		convo = purple_conversations_find_with_account(args[1], irc->account);
+		PurpleConversation *convo;
+		PurpleConversationManager *manager;
+
+		manager = purple_conversation_manager_get_default();
+		convo = purple_conversation_manager_find(manager, irc->account,
+		                                         args[1]);
 		if (!convo) {
 			purple_debug_error("irc", "Got a NAMES list for %s, which doesn't exist", args[1]);
 			g_string_free(irc->names, TRUE);
@@ -798,8 +822,10 @@
 {
 	PurpleConnection *gc;
 	PurpleConversation *convo;
+	PurpleConversationManager *manager;
 
-	convo = purple_conversations_find_with_account(args[1], irc->account);
+	manager = purple_conversation_manager_get_default();
+	convo = purple_conversation_manager_find(manager, irc->account, args[1]);
 	if (convo) {
 		purple_conversation_write_system_message(convo,
 			PURPLE_IS_IM_CONVERSATION(convo) ? _("User is not logged in") : _("no such channel"),
@@ -822,8 +848,11 @@
 {
 	PurpleConnection *gc;
 	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 
-	chat = purple_conversations_find_chat_with_account(args[1], irc->account);
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             args[1]);
 	if (chat) {
 		purple_conversation_write_system_message(chat, args[2],
 			PURPLE_MESSAGE_NO_LOG);
@@ -837,7 +866,12 @@
 
 void irc_msg_notinchan(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
-	PurpleConversation *chat = purple_conversations_find_chat_with_account(args[1], irc->account);
+	PurpleConversation *chat;
+	PurpleConversationManager *manager;
+
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             args[1]);
 
 	purple_debug_info("irc", "We're apparently not in %s, but tried to use it", args[1]);
 	if (chat) {
@@ -851,10 +885,14 @@
 void irc_msg_notop(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 
-	chat = purple_conversations_find_chat_with_account(args[1], irc->account);
-	if (!chat)
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             args[1]);
+	if (!chat) {
 		return;
+	}
 
 	purple_conversation_write_system_message(chat, args[2], 0);
 }
@@ -932,6 +970,7 @@
 {
 	PurpleConnection *gc = purple_account_get_connection(irc->account);
 	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 	PurpleChatUser *cb;
 
 	char *nick, *userhost, *buf;
@@ -942,11 +981,14 @@
 
 	nick = irc_mask_nick(from);
 
+	manager = purple_conversation_manager_get_default();
+
 	if (!purple_utf8_strcasecmp(nick, purple_connection_get_display_name(gc))) {
 		/* We are joining a channel for the first time */
 		purple_serv_got_joined_chat(gc, id++, args[0]);
 		g_free(nick);
-		chat = purple_conversations_find_chat_with_account(args[0], irc->account);
+		chat = purple_conversation_manager_find_chat(manager, irc->account,
+		                                             args[0]);
 
 		if (chat == NULL) {
 			purple_debug_error("irc", "tried to join %s but couldn't\n", args[0]);
@@ -967,7 +1009,8 @@
 		return;
 	}
 
-	chat = purple_conversations_find_chat_with_account(args[0], irc->account);
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             args[0]);
 	if (chat == NULL) {
 		purple_debug_error("irc", "JOIN for %s failed", args[0]);
 		g_free(nick);
@@ -995,11 +1038,16 @@
 void irc_msg_kick(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	PurpleConnection *gc = purple_account_get_connection(irc->account);
-	PurpleConversation *chat = purple_conversations_find_chat_with_account(args[0], irc->account);
+	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 	char *nick, *buf;
 
 	g_return_if_fail(gc);
 
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             args[0]);
+
 	nick = irc_mask_nick(from);
 
 	if (!chat) {
@@ -1024,12 +1072,16 @@
 
 void irc_msg_mode(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
-	PurpleConversation *chat;
 	char *nick = irc_mask_nick(from), *buf;
 
 	if (*args[0] == '#' || *args[0] == '&') {	/* Channel	*/
+		PurpleConversation *chat;
+		PurpleConversationManager *manager;
 		char *escaped;
-		chat = purple_conversations_find_chat_with_account(args[0], irc->account);
+
+		manager = purple_conversation_manager_get_default();
+		chat = purple_conversation_manager_find_chat(manager, irc->account,
+		                                             args[0]);
 		if (!chat) {
 			purple_debug_error("irc", "MODE received for %s, which we are not in", args[0]);
 			g_free(nick);
@@ -1093,6 +1145,7 @@
 {
 	PurpleConnection *gc = purple_account_get_connection(irc->account);
 	PurpleConversation *im;
+	PurpleConversationManager *manager;
 	GSList *chats;
 	char *nick = irc_mask_nick(from);
 
@@ -1116,10 +1169,11 @@
 		chats = chats->next;
 	}
 
-	im = purple_conversations_find_im_with_account(nick,
-						   irc->account);
-	if (im != NULL)
+	manager = purple_conversation_manager_get_default();
+	im = purple_conversation_manager_find_im(manager, irc->account, nick);
+	if (im != NULL) {
 		purple_conversation_set_name(im, args[0]);
+	}
 
 	g_free(nick);
 }
@@ -1202,6 +1256,7 @@
 {
 	PurpleConnection *gc = purple_account_get_connection(irc->account);
 	PurpleConversation *chat;
+	PurpleConversationManager *manager;
 	char *nick, *msg, *channel;
 
 	g_return_if_fail(gc);
@@ -1210,7 +1265,9 @@
 	 * that I can see.  This catches that. */
 	channel = (args[0][0] == ':') ? &args[0][1] : args[0];
 
-	chat = purple_conversations_find_chat_with_account(channel, irc->account);
+	manager = purple_conversation_manager_get_default();
+	chat = purple_conversation_manager_find_chat(manager, irc->account,
+	                                             channel);
 	if (!chat) {
 		purple_debug_info("irc", "Got a PART on %s, which doesn't exist -- probably closed", channel);
 		return;
@@ -1246,6 +1303,7 @@
 void irc_msg_pong(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	PurpleConversation *convo;
+	PurpleConversationManager *manager;
 	PurpleConnection *gc;
 	char **parts, *msg;
 	gint64 oldstamp;
@@ -1265,7 +1323,8 @@
 		                              (gdouble)G_USEC_PER_SEC);
 	}
 
-	convo = purple_conversations_find_with_account(parts[0], irc->account);
+	manager = purple_conversation_manager_get_default();
+	convo = purple_conversation_manager_find(manager, irc->account, parts[0]);
 	g_strfreev(parts);
 	if (convo) {
 		purple_conversation_write_system_message(convo, msg, PURPLE_MESSAGE_NO_LOG);
@@ -1319,7 +1378,11 @@
 	if (!purple_utf8_strcasecmp(to, purple_connection_get_display_name(gc))) {
 		purple_serv_got_im(gc, nick, msg, 0, time(NULL));
 	} else {
-		chat = purple_conversations_find_chat_with_account(irc_nick_skip_mode(irc, to), irc->account);
+		PurpleConversationManager *manager;
+
+		manager = purple_conversation_manager_get_default();
+		chat = purple_conversation_manager_find_chat(manager, irc->account,
+		                                             irc_nick_skip_mode(irc, to));
 		if (chat) {
 			purple_serv_got_chat_in(gc, purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(chat)),
 				nick, PURPLE_MESSAGE_RECV, msg, time(NULL));
@@ -1334,11 +1397,14 @@
 void irc_msg_regonly(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	PurpleConnection *gc = purple_account_get_connection(irc->account);
+	PurpleConversationManager *manager;
 	char *msg;
 
 	g_return_if_fail(gc);
 
-	if (purple_conversations_find_chat_with_account(args[1], irc->account)) {
+	manager = purple_conversation_manager_get_default();
+
+	if(purple_conversation_manager_find_chat(manager, irc->account, args[1])) {
 		/* This is a channel we're already in; for some reason,
 		 * freenode feels the need to notify us that in some
 		 * hypothetical other situation this might not have

mercurial