pidgin/pidgin

Parents ea1c2cf86b55
Children 4f2160a2edce
Port the protocol plugins to the purple_conversation_manager_api

Testing Done:
Connected an xmpp and irc account and verified chats and ims worked.

Reviewed at https://reviews.imfreedom.org/r/829/
--- a/libpurple/protocols/bonjour/xmpp.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/bonjour/xmpp.c Mon Jul 26 04:13:19 2021 -0500
@@ -268,8 +268,11 @@
g_clear_error(&error);
return;
} else if (ret <= 0) {
+ PurpleAccount *account = NULL;
PurpleConversation *conv = NULL;
- PurpleAccount *account = NULL;
+ PurpleConversationManager *manager = NULL;
+
+ manager = purple_conversation_manager_get_default();
purple_debug_error(
"bonjour",
@@ -279,11 +282,12 @@
account = purple_buddy_get_account(pb);
- conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(bb->name, account));
- if (conv != NULL)
+ conv = purple_conversation_manager_find_im(manager, account, bb->name);
+ if (conv != NULL) {
purple_conversation_write_system_message(conv,
_("Unable to send message."),
PURPLE_MESSAGE_ERROR);
+ }
bonjour_xmpp_close_conversation(bb->conversation);
bb->conversation = NULL;
@@ -321,8 +325,11 @@
ret = 0;
g_clear_error(&error);
} else if (ret <= 0) {
+ PurpleAccount *account;
PurpleConversation *conv;
- PurpleAccount *account;
+ PurpleConversationManager *manager;
+
+ manager = purple_conversation_manager_get_default();
purple_debug_error(
"bonjour",
@@ -332,11 +339,12 @@
account = purple_buddy_get_account(pb);
- conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(bb->name, account));
- if (conv != NULL)
+ conv = purple_conversation_manager_find_im(manager, account, bb->name);
+ if (conv != NULL) {
purple_conversation_write_system_message(conv,
_("Unable to send message."),
PURPLE_MESSAGE_ERROR);
+ }
bonjour_xmpp_close_conversation(bb->conversation);
bb->conversation = NULL;
@@ -470,8 +478,11 @@
return;
} else if (ret <= 0) {
PurpleConversation *conv;
+ PurpleConversationManager *manager;
+ BonjourBuddy *bb = NULL;
const char *bname = bconv->buddy_name;
- BonjourBuddy *bb = NULL;
+
+ manager = purple_conversation_manager_get_default();
if(bconv->pb) {
bb = purple_buddy_get_protocol_data(bconv->pb);
@@ -484,15 +495,18 @@
bname ? bname : "(unknown)", bconv->ip,
error ? error->message : "(null)");
- conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(bname, bconv->account));
- if (conv != NULL)
+ conv = purple_conversation_manager_find_im(manager, bconv->account,
+ bname);
+ if (conv != NULL) {
purple_conversation_write_system_message(conv,
_("Unable to send the message, the conversation couldn't be started."),
PURPLE_MESSAGE_ERROR);
+ }
bonjour_xmpp_close_conversation(bconv);
- if(bb != NULL)
+ if(bb != NULL) {
bb->conversation = NULL;
+ }
g_clear_error(&error);
return;
@@ -558,11 +572,17 @@
if (bconv->pb) {
PurpleConversation *conv;
- conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(bname, bconv->account));
- if (conv != NULL)
+ PurpleConversationManager *manager;
+
+ manager = purple_conversation_manager_get_default();
+
+ conv = purple_conversation_manager_find_im(manager, bconv->account,
+ bname);
+ if (conv != NULL) {
purple_conversation_write_system_message(conv,
_("Unable to send the message, the conversation couldn't be started."),
PURPLE_MESSAGE_ERROR);
+ }
}
purple_gio_graceful_close(G_IO_STREAM(bconv->socket),
@@ -621,11 +641,17 @@
if (bconv->pb) {
PurpleConversation *conv;
- conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(bname, bconv->account));
- if (conv != NULL)
+ PurpleConversationManager *manager;
+
+ manager = purple_conversation_manager_get_default();
+
+ conv = purple_conversation_manager_find_im(manager, bconv->account,
+ bname);
+ if (conv != NULL) {
purple_conversation_write_system_message(conv,
_("Unable to send the message, the conversation couldn't be started."),
PURPLE_MESSAGE_ERROR);
+ }
}
/* We don't want to recieve anything else */
@@ -780,8 +806,9 @@
res, &error);
if (conn == NULL) {
+ PurpleAccount *account = NULL;
PurpleConversation *conv = NULL;
- PurpleAccount *account = NULL;
+ PurpleConversationManager *manager = NULL;
GSList *tmp;
if (error && error->code == G_IO_ERROR_CANCELLED) {
@@ -833,11 +860,14 @@
purple_debug_error("bonjour", "No more addresses for buddy %s. Aborting", purple_buddy_get_name(pb));
- conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(bb->name, account));
- if (conv != NULL)
+ manager = purple_conversation_manager_get_default();
+
+ conv = purple_conversation_manager_find_im(manager, account, bb->name);
+ if (conv != NULL) {
purple_conversation_write_system_message(conv,
_("Unable to send the message, the conversation couldn't be started."),
PURPLE_MESSAGE_ERROR);
+ }
bonjour_xmpp_close_conversation(bb->conversation);
bb->conversation = NULL;
@@ -851,8 +881,9 @@
g_object_ref(g_io_stream_get_output_stream(G_IO_STREAM(conn)));
if (!bonjour_xmpp_send_stream_init(bb->conversation, &error)) {
+ PurpleAccount *account = NULL;
PurpleConversation *conv = NULL;
- PurpleAccount *account = NULL;
+ PurpleConversationManager *manager = NULL;
purple_debug_error("bonjour",
"Error starting stream with buddy %s at "
@@ -863,11 +894,14 @@
account = purple_buddy_get_account(pb);
- conv = PURPLE_CONVERSATION(purple_conversations_find_im_with_account(bb->name, account));
- if (conv != NULL)
+ manager = purple_conversation_manager_get_default();
+
+ conv = purple_conversation_manager_find_im(manager, account, bb->name);
+ if (conv != NULL) {
purple_conversation_write_system_message(conv,
_("Unable to send the message, the conversation couldn't be started."),
PURPLE_MESSAGE_ERROR);
+ }
bonjour_xmpp_close_conversation(bb->conversation);
bb->conversation = NULL;
--- a/libpurple/protocols/facebook/facebook.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/facebook/facebook.c Mon Jul 26 04:13:19 2021 -0500
@@ -395,17 +395,20 @@
GSList *l;
PurpleAccount *acct;
PurpleConversation *chat;
+ PurpleConversationManager *manager;
PurpleConnection *gc;
gc = fb_data_get_connection(fata);
acct = purple_connection_get_account(gc);
fetch = g_hash_table_new(fb_id_hash, fb_id_equal);
+ manager = purple_conversation_manager_get_default();
+
for (l = events; l != NULL; l = l->next) {
event = l->data;
FB_ID_TO_STR(event->tid, tid);
- chat = purple_conversations_find_chat_with_account(tid, acct);
+ chat = purple_conversation_manager_find_chat(manager, acct, tid);
if (chat == NULL) {
continue;
@@ -511,6 +514,7 @@
GSList *l;
PurpleAccount *acct;
PurpleConversation *chat;
+ PurpleConversationManager *manager;
PurpleConnection *gc;
PurpleMessageFlags flags;
@@ -520,6 +524,8 @@
open = purple_account_get_bool(acct, "group-chat-open", TRUE);
self = purple_account_get_bool(acct, "show-self", TRUE);
+ manager = purple_conversation_manager_get_default();
+
for (l = msgs; l != NULL; l = l->next) {
msg = l->data;
FB_ID_TO_STR(msg->uid, uid);
@@ -569,7 +575,7 @@
}
FB_ID_TO_STR(msg->tid, tid);
- chat = purple_conversations_find_chat_with_account(tid, acct);
+ chat = purple_conversation_manager_find_chat(manager, acct, tid);
if (chat == NULL) {
if (!open) {
@@ -636,6 +642,7 @@
GSList *l;
PurpleAccount *acct;
PurpleConversation *conv;
+ PurpleConversationManager *manager;
PurpleChatConversation *chat;
PurpleConnection *gc;
@@ -644,7 +651,8 @@
id = fb_id_hash(&thrd->tid);
FB_ID_TO_STR(thrd->tid, tid);
- conv = purple_conversations_find_chat_with_account(tid, acct);
+ manager = purple_conversation_manager_get_default();
+ conv = purple_conversation_manager_find_chat(manager, acct, tid);
if((conv == NULL) || purple_chat_conversation_has_left(PURPLE_CHAT_CONVERSATION(conv))) {
conv = purple_serv_got_joined_chat(gc, id, tid);
chat = PURPLE_CHAT_CONVERSATION(conv);
@@ -707,12 +715,15 @@
PurpleAccount *acct;
PurpleConnection *gc;
PurpleConversation *chat;
+ PurpleConversationManager *manager;
FB_ID_TO_STR(thrd->tid, tid);
gc = fb_data_get_connection(fata);
acct = purple_connection_get_account(gc);
- chat = purple_conversations_find_chat_with_account(tid, acct);
+
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat(manager, acct, tid);
if (chat == NULL) {
PurpleRequestCommonParameters *cpar;
@@ -1312,6 +1323,7 @@
FbId tid;
gint id;
PurpleConversation *chat;
+ PurpleConversationManager *manager;
PurpleRequestCommonParameters *cpar;
name = g_hash_table_lookup(data, "name");
@@ -1329,7 +1341,11 @@
tid = FB_ID_FROM_STR(name);
id = fb_id_hash(&tid);
- chat = purple_conversations_find_chat(gc, id);
+
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
if ((chat != NULL) && !purple_chat_conversation_has_left(PURPLE_CHAT_CONVERSATION(chat))) {
purple_conversation_present(chat);
@@ -1362,6 +1378,7 @@
FbId tid;
FbId uid;
PurpleConversation *chat;
+ PurpleConversationManager *manager;
PurpleRequestCommonParameters *cpar;
if (!FB_ID_IS_STR(who)) {
@@ -1376,7 +1393,11 @@
fata = purple_connection_get_protocol_data(gc);
api = fb_data_get_api(fata);
- chat = purple_conversations_find_chat(gc, id);
+
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
name = purple_conversation_get_name(chat);
tid = FB_ID_FROM_STR(name);
@@ -1397,11 +1418,14 @@
gchar *sext;
PurpleAccount *acct;
PurpleConversation *chat;
+ PurpleConversationManager *manager;
acct = purple_connection_get_account(gc);
fata = purple_connection_get_protocol_data(gc);
api = fb_data_get_api(fata);
- chat = purple_conversations_find_chat(gc, id);
+
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager, acct, id);
name = purple_conversation_get_name(chat);
tid = FB_ID_FROM_STR(name);
@@ -1428,10 +1452,15 @@
FbData *fata;
FbId tid;
PurpleConversation *chat;
+ PurpleConversationManager *manager;
fata = purple_connection_get_protocol_data(gc);
api = fb_data_get_api(fata);
- chat = purple_conversations_find_chat(gc, id);
+
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
name = purple_conversation_get_name(chat);
tid = FB_ID_FROM_STR(name);
--- a/libpurple/protocols/facebook/util.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/facebook/util.c Mon Jul 26 04:13:19 2021 -0500
@@ -437,6 +437,7 @@
const gchar *name, *me;
PurpleAccount *acct;
PurpleConversation *conv;
+ PurpleConversationManager *manager;
PurpleMessage *msg;
if (!(flags & PURPLE_MESSAGE_SEND)) {
@@ -445,7 +446,9 @@
}
acct = purple_connection_get_account(gc);
- conv = purple_conversations_find_im_with_account(who, acct);
+ manager = purple_conversation_manager_get_default();
+
+ conv = purple_conversation_manager_find_im(manager, acct, who);
if (conv == NULL) {
conv = purple_im_conversation_new(acct, who);
@@ -473,6 +476,7 @@
const gchar *name;
PurpleAccount *acct;
PurpleConversation *conv;
+ PurpleConversationManager *manager;
PurpleMessage *msg;
const gchar *me;
@@ -482,7 +486,9 @@
}
acct = purple_connection_get_account(gc);
- conv = purple_conversations_find_chat(gc, id);
+ manager = purple_conversation_manager_get_default();
+
+ conv = purple_conversation_manager_find_chat_by_id(manager, acct, id);
me = purple_account_get_name_for_display(acct);
name = purple_account_get_username(acct);
--- a/libpurple/protocols/gg/chat.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/gg/chat.c Mon Jul 26 04:13:19 2021 -0500
@@ -489,6 +489,7 @@
GGPInfo *info = purple_connection_get_protocol_data(gc);
GDateTime *dt = NULL;
PurpleConversation *conv;
+ PurpleConversationManager *manager;
ggp_chat_local_info *chat;
gboolean succ = TRUE;
const gchar *me;
@@ -501,9 +502,10 @@
return -1;
}
- conv = purple_conversations_find_chat_with_account(
- ggp_chat_get_name_from_id(chat->id),
- purple_connection_get_account(gc));
+ manager = purple_conversation_manager_get_default();
+ conv = purple_conversation_manager_find_chat(manager,
+ purple_connection_get_account(gc),
+ ggp_chat_get_name_from_id(chat->id));
gg_msg = ggp_message_format_to_gg(conv,
purple_message_get_contents(msg));
--- a/libpurple/protocols/gg/image-prpl.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/gg/image-prpl.c Mon Jul 26 04:13:19 2021 -0500
@@ -168,6 +168,7 @@
ggp_image_session_data *sdata = ggp_image_get_sdata(gc);
ggp_image_sent *sent_image;
PurpleConversation *conv;
+ PurpleConversationManager *manager;
uint64_t id;
gchar *gg_filename;
@@ -208,9 +209,10 @@
purple_image_get_data_size(sent_image->image));
g_free(gg_filename);
- conv = purple_conversations_find_with_account(
- sent_image->conv_name,
- purple_connection_get_account(gc));
+ manager = purple_conversation_manager_get_default();
+ conv = purple_conversation_manager_find(manager,
+ purple_connection_get_account(gc),
+ sent_image->conv_name);
if (conv != NULL) {
gchar *msg = g_strdup_printf(_("Image delivered to %u."),
image_request->sender);
--- a/libpurple/protocols/gg/message-prpl.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/gg/message-prpl.c Mon Jul 26 04:13:19 2021 -0500
@@ -167,11 +167,14 @@
{
PurpleAccount *account = purple_connection_get_account(gc);
PurpleConversation *im;
+ PurpleConversationManager *manager;
const gchar *who = ggp_uin_to_str(uin);
- im = purple_conversations_find_im_with_account(who, account);
- if (im)
+ manager = purple_conversation_manager_get_default();
+ im = purple_conversation_manager_find_im(manager, account, who);
+ if (im) {
return im;
+ }
im = purple_im_conversation_new(account, who);
return im;
}
@@ -647,6 +650,7 @@
{
GGPInfo *info = purple_connection_get_protocol_data(gc);
PurpleConversation *im;
+ PurpleConversationManager *manager;
ggp_buddy_data *buddy_data;
gchar *gg_msg;
gboolean succ;
@@ -663,8 +667,10 @@
if (buddy_data->blocked)
return -1;
- im = purple_conversations_find_im_with_account(
- rcpt, purple_connection_get_account(gc));
+ manager = purple_conversation_manager_get_default();
+ im = purple_conversation_manager_find_im(manager,
+ purple_connection_get_account(gc),
+ rcpt);
gg_msg = ggp_message_format_to_gg(im,
purple_message_get_contents(msg));
--- a/libpurple/protocols/irc/cmds.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/irc/cmds.c Mon Jul 26 04:13:19 2021 -0500
@@ -29,11 +29,16 @@
int irc_cmd_default(struct irc_conn *irc, const char *cmd, const char *target, const char **args)
{
- PurpleConversation *convo = purple_conversations_find_with_account(target, irc->account);
+ PurpleConversation *convo;
+ PurpleConversationManager *manager;
char *buf;
- if (!convo)
+ manager = purple_conversation_manager_get_default();
+ convo = purple_conversation_manager_find(manager, irc->account, target);
+
+ if (!convo) {
return 1;
+ }
buf = g_strdup_printf(_("Unknown command: %s"), cmd);
purple_conversation_write_system_message(convo, buf, PURPLE_MESSAGE_NO_LOG);
@@ -92,12 +97,15 @@
const gchar *src, *me;
gchar *msg;
PurpleConversation *convo;
+ PurpleConversationManager *manager;
PurpleMessage *pmsg;
- if (!args || !args[0] || !gc)
+ if (!args || !args[0] || !gc) {
return 0;
+ }
- convo = purple_conversations_find_with_account(target, irc->account);
+ manager = purple_conversation_manager_get_default();
+ convo = purple_conversation_manager_find(manager, irc->account, target);
me = purple_account_get_name_for_display(irc->account);
msg = g_strdup_printf("/me %s", args[0]);
@@ -257,18 +265,23 @@
int irc_cmd_kick(struct irc_conn *irc, const char *cmd, const char *target, const char **args)
{
+ PurpleConversationManager *manager;
char *buf;
- if (!args || !args[0])
+ if(!args || !args[0]) {
return 0;
+ }
- if (!purple_conversations_find_chat_with_account(target, irc->account))
+ manager = purple_conversation_manager_get_default();
+ if(!purple_conversation_manager_find_chat(manager, irc->account, target)) {
return 0;
+ }
- if (args[1])
+ if(args[1]) {
buf = irc_format(irc, "vcn:", "KICK", target, args[0], args[1]);
- else
+ } else {
buf = irc_format(irc, "vcn", "KICK", target, args[0]);
+ }
irc_send(irc, buf);
g_free(buf);
@@ -599,16 +612,20 @@
int irc_cmd_topic(struct irc_conn *irc, const char *cmd, const char *target, const char **args)
{
+ PurpleConversation *chat;
+ PurpleConversationManager *manager;
char *buf;
const char *topic;
- PurpleConversation *chat;
- if (!args)
+ if (!args) {
return 0;
+ }
- chat = purple_conversations_find_chat_with_account(target, irc->account);
- if (!chat)
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat(manager, irc->account, target);
+ if (!chat) {
return 0;
+ }
if (!args[0]) {
topic = purple_chat_conversation_get_topic (PURPLE_CHAT_CONVERSATION(chat));
--- a/libpurple/protocols/irc/irc.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/irc/irc.c Mon Jul 26 04:13:19 2021 -0500
@@ -858,9 +858,14 @@
gint id, const gchar *message, const gchar *name)
{
struct irc_conn *irc = purple_connection_get_protocol_data(gc);
- PurpleConversation *convo = PURPLE_CONVERSATION(purple_conversations_find_chat(gc, id));
+ PurpleConversation *convo;
+ PurpleConversationManager *manager;
const char *args[2];
+ manager = purple_conversation_manager_get_default();
+ convo = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
if (!convo) {
purple_debug_error("irc", "Got chat invite request for bogus chat");
return;
@@ -876,11 +881,17 @@
gint id)
{
struct irc_conn *irc = purple_connection_get_protocol_data(gc);
- PurpleConversation *convo = PURPLE_CONVERSATION(purple_conversations_find_chat(gc, id));
+ PurpleConversation *convo;
+ PurpleConversationManager *manager;
const char *args[2];
- if (!convo)
+ manager = purple_conversation_manager_get_default();
+ convo = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
+ if (!convo) {
return;
+ }
args[0] = purple_conversation_get_name(convo);
args[1] = NULL;
@@ -893,10 +904,16 @@
PurpleMessage *msg)
{
struct irc_conn *irc = purple_connection_get_protocol_data(gc);
- PurpleConversation *convo = PURPLE_CONVERSATION(purple_conversations_find_chat(gc, id));
+ PurpleConversation *convo;
+ PurpleConversationManager *manager;
const char *args[2];
char *tmp;
+ manager = purple_conversation_manager_get_default();
+ convo = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
+
if (!convo) {
purple_debug_error("irc", "chat send on nonexistent chat");
return -EINVAL;
@@ -942,16 +959,23 @@
irc_chat_set_topic(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
gint id, const gchar *topic)
{
+ PurpleConversation *conv;
+ PurpleConversationManager *manager;
char *buf;
const char *name = NULL;
struct irc_conn *irc;
+ manager = purple_conversation_manager_get_default();
+ conv = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
+
irc = purple_connection_get_protocol_data(gc);
- name = purple_conversation_get_name(PURPLE_CONVERSATION(
- purple_conversations_find_chat(gc, id)));
+ name = purple_conversation_get_name(conv);
- if (name == NULL)
+ if (name == NULL) {
return;
+ }
buf = irc_format(irc, "vt:", "TOPIC", name, topic);
irc_send(irc, buf);
--- 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
--- a/libpurple/protocols/jabber/jabber.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/jabber/jabber.c Mon Jul 26 04:13:19 2021 -0500
@@ -3229,8 +3229,12 @@
if (!_jabber_send_buzz(js, username, &error)) {
PurpleAccount *account = purple_connection_get_account(gc);
- PurpleConversation *conv =
- purple_conversations_find_with_account(username, account);
+ PurpleConversation *conv;
+ PurpleConversationManager *manager;
+
+ manager = purple_conversation_manager_get_default();
+ conv = purple_conversation_manager_find(manager, account, username);
+
purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)");
if (conv) {
--- a/libpurple/protocols/jabber/message.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/jabber/message.c Mon Jul 26 04:13:19 2021 -0500
@@ -104,6 +104,7 @@
JabberID *jid = jabber_id_new(contact);
PurpleConnection *gc;
+ PurpleConversationManager *manager;
PurpleAccount *account;
PurpleMessageFlags flags = 0;
JabberBuddy *jb;
@@ -113,6 +114,8 @@
if(!jid)
return;
+ manager = purple_conversation_manager_get_default();
+
gc = jm->js->gc;
account = purple_connection_get_account(gc);
@@ -130,8 +133,10 @@
purple_serv_got_typing(gc, contact, 0, PURPLE_IM_TYPED);
break;
case JM_STATE_GONE: {
- PurpleConversation *im = purple_conversations_find_im_with_account(
- contact, account);
+ PurpleConversation *im = NULL;
+
+ im = purple_conversation_manager_find_im(manager, account, contact);
+
if (im && jid->node && jid->domain) {
char buf[256];
PurpleBuddy *buddy;
@@ -177,7 +182,7 @@
*/
PurpleConversation *im;
- im = purple_conversations_find_im_with_account(contact, account);
+ im = purple_conversation_manager_find_im(manager, account, contact);
if (im && !purple_strequal(contact,
purple_conversation_get_name(im))) {
purple_debug_info("jabber", "Binding conversation to %s\n",
@@ -752,9 +757,14 @@
jabber_id_free(jid);
}
} else if (jm->type == JABBER_MESSAGE_NORMAL ||
- jm->type == JABBER_MESSAGE_CHAT) {
- conv =
- purple_conversations_find_with_account(from, account);
+ jm->type == JABBER_MESSAGE_CHAT)
+ {
+ PurpleConversationManager *manager;
+
+ manager = purple_conversation_manager_get_default();
+ conv = purple_conversation_manager_find(manager,
+ account,
+ from);
if (!conv) {
/* we need to create the conversation here */
conv = PURPLE_CONVERSATION(
@@ -975,10 +985,12 @@
PurpleAccount *account = purple_connection_get_account(jm->js->gc);
GList *found_smileys, *it, *it_next;
PurpleConversation *conv;
+ PurpleConversationManager *manager;
gboolean has_too_large_smiley = FALSE;
gchar *smileyfied_xhtml = NULL;
- conv = purple_conversations_find_with_account(jm->to, account);
+ manager = purple_conversation_manager_get_default();
+ conv = purple_conversation_manager_find(manager, account, jm->to);
if (!jabber_conv_support_custom_smileys(jm->js, conv, jm->to))
return NULL;
--- a/libpurple/protocols/jabber/presence.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/jabber/presence.c Mon Jul 26 04:13:19 2021 -0500
@@ -765,18 +765,20 @@
PurpleBuddy *b;
char *buddy_name;
PurpleConversation *im;
+ PurpleConversationManager *manager;
buddy_name = jabber_id_get_bare_jid(presence->jid_from);
account = purple_connection_get_account(js->gc);
b = purple_blist_find_buddy(account, buddy_name);
+ manager = purple_conversation_manager_get_default();
/*
* Unbind/unlock from sending messages to a specific resource on
* presence changes. This is locked to a specific resource when
* receiving a message (in message.c).
*/
- im = purple_conversations_find_im_with_account(buddy_name, account);
+ im = purple_conversation_manager_find_im(manager, account, buddy_name);
if (im) {
purple_debug_info("jabber", "Changed conversation binding from %s to %s\n",
purple_conversation_get_name(im), buddy_name);
--- a/libpurple/protocols/novell/novell.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/novell/novell.c Mon Jul 26 04:13:19 2021 -0500
@@ -224,11 +224,15 @@
if (ret_code == NM_OK) {
user_record = (NMUserRecord *) resp_data;
if (user_record) {
+ PurpleConversationManager *manager = NULL;
+
+ manager = purple_conversation_manager_get_default();
/* Set the title for the conversation */
/* XXX - Should this be find_im_with_account? */
- gconv = purple_conversations_find_with_account(nm_user_record_get_display_id(user_record),
- (PurpleAccount *) user->client_data);
+ gconv = purple_conversation_manager_find(manager,
+ (PurpleAccount *)user->client_data,
+ nm_user_record_get_display_id(user_record));
if (gconv) {
dn = nm_user_record_get_dn(user_record);
@@ -1791,19 +1795,22 @@
user_record = nm_find_user_record(user, nm_event_get_source(event));
if (user_record) {
+ PurpleConversationManager *manager = NULL;
flags = 0;
- if (nm_event_get_type(event) == NMEVT_RECEIVE_AUTOREPLY)
+ if(nm_event_get_type(event) == NMEVT_RECEIVE_AUTOREPLY) {
flags |= PURPLE_MESSAGE_AUTO_RESP;
+ }
purple_serv_got_im(purple_account_get_connection(user->client_data),
nm_user_record_get_display_id(user_record),
text, flags,
nm_event_get_gmt(event));
- im = purple_conversations_find_im_with_account(
- nm_user_record_get_display_id(user_record),
- (PurpleAccount *) user->client_data);
+ manager = purple_conversation_manager_get_default();
+ im = purple_conversation_manager_find_im(manager,
+ PURPLE_ACCOUNT(user->client_data),
+ nm_user_record_get_display_id(user_record));
if (im) {
contact = nm_find_contact(user, nm_event_get_source(event));
@@ -2091,10 +2098,14 @@
ur = nm_find_user_record(user, nm_event_get_source(event));
if (ur) {
+ PurpleConversationManager *manager = NULL;
+
+ manager = purple_conversation_manager_get_default();
+
/* XXX - Should this be PURPLE_CONV_TYPE_IM? */
- gconv =
- purple_conversations_find_with_account(nm_user_record_get_display_id(ur),
- user->client_data);
+ gconv = purple_conversation_manager_find(manager,
+ PURPLE_ACCOUNT(user->client_data),
+ nm_user_record_get_display_id(ur));
if (gconv) {
const char *name = nm_user_record_get_full_name(ur);
@@ -2474,6 +2485,7 @@
{
NMConference *conference;
PurpleConversation *chat;
+ PurpleConversationManager *manager = NULL;
GSList *cnode;
NMMessage *message;
NMUser *user;
@@ -2535,9 +2547,12 @@
}
}
+ manager = purple_conversation_manager_get_default();
/* The conference was not found, must be closed */
- chat = purple_conversations_find_chat(gc, id);
+ chat = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
if (chat) {
str = g_strdup(_("This conference has been closed."
" No more messages can be sent."));
--- a/libpurple/protocols/null/nullprpl.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/null/nullprpl.c Mon Jul 26 04:13:19 2021 -0500
@@ -130,24 +130,38 @@
static void call_chat_func(gpointer data, gpointer userdata) {
PurpleConnection *to = (PurpleConnection *)data;
+ PurpleConversation *chat;
+ PurpleConversationManager *manager;
ChatFuncData *cfdata = (ChatFuncData *)userdata;
-
int id = purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(cfdata->from_chat));
- PurpleConversation *chat = purple_conversations_find_chat(to, id);
- if (chat)
+
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(to),
+ id);
+ if (chat) {
cfdata->fn(cfdata->from_chat, chat, id,
purple_conversation_get_name(chat), cfdata->userdata);
+ }
}
static void foreach_gc_in_chat(ChatFunc fn, PurpleConnection *from,
int id, gpointer userdata) {
- PurpleConversation *chat = purple_conversations_find_chat(from, id);
- ChatFuncData cfdata = { fn,
- chat,
- userdata };
+ PurpleConversation *chat;
+ PurpleConversationManager *manager;
+ ChatFuncData cfdata = {
+ .fn = fn,
+ .userdata = userdata
+ };
- g_list_foreach(purple_connections_get_all(), call_chat_func,
- &cfdata);
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(from),
+ id);
+
+ cfdata.from_chat = chat;
+
+ g_list_foreach(purple_connections_get_all(), call_chat_func, &cfdata);
}
@@ -748,12 +762,17 @@
null_join_chat(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
GHashTable *components)
{
- const char *username = purple_account_get_username(purple_connection_get_account(gc));
+ PurpleAccount *account = purple_connection_get_account(gc);
+ PurpleConversationManager *manager;
+ const char *username = purple_account_get_username(account);
const char *room = g_hash_table_lookup(components, "room");
int chat_id = g_str_hash(room);
+
purple_debug_info("nullprpl", "%s is joining chat room %s\n", username, room);
- if (!purple_conversations_find_chat(gc, chat_id)) {
+ manager = purple_conversation_manager_get_default();
+
+ if(!purple_conversation_manager_find_chat_by_id(manager, account, chat_id)) {
purple_serv_got_joined_chat(gc, chat_id, room);
/* tell everyone that we joined, and add them if they're already there */
@@ -807,16 +826,24 @@
null_chat_invite(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
gint id, const gchar *message, const gchar *who)
{
- const char *username = purple_account_get_username(purple_connection_get_account(gc));
- PurpleConversation *chat = purple_conversations_find_chat(gc, id);
- const char *room = purple_conversation_get_name(chat);
+ PurpleAccount *account = purple_connection_get_account(gc);
PurpleAccount *to_acct = purple_accounts_find(who, "null");
+ PurpleConversation *chat;
+ PurpleConversationManager *manager;
+ const char *username = purple_account_get_username(account);
+ const char *room = NULL;
+
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager, account, id);
+ room = purple_conversation_get_name(chat);
purple_debug_info("nullprpl", "%s is inviting %s to join chat room %s\n",
username, who, room);
if (to_acct) {
- PurpleConversation *to_conv = purple_conversations_find_chat(purple_account_get_connection(to_acct), id);
+ PurpleConversation *to_conv;
+
+ to_conv = purple_conversation_manager_find_chat_by_id(manager, to_acct, id);
if (to_conv) {
char *tmp = g_strdup_printf("%s is already in chat room %s.", who, room);
purple_debug_info("nullprpl",
@@ -852,7 +879,13 @@
null_chat_leave(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
gint id)
{
- PurpleConversation *chat = purple_conversations_find_chat(gc, id);
+ PurpleConversationManager *manager;
+ PurpleConversation *chat;
+
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
purple_debug_info("nullprpl", "%s is leaving chat room %s\n",
purple_account_get_username(purple_connection_get_account(gc)),
purple_conversation_get_name(chat));
@@ -877,10 +910,14 @@
null_chat_send(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
gint id, PurpleMessage *msg)
{
- const char *username = purple_account_get_username(purple_connection_get_account(gc));
- PurpleConversation *chat = purple_conversations_find_chat(gc, id);
+ PurpleAccount *account = purple_connection_get_account(gc);
+ PurpleConversation *chat;
+ PurpleConversationManager *manager;
const gchar *message = purple_message_get_contents(msg);
+ const gchar *username = purple_account_get_username(account);
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager, account, id);
if (chat) {
purple_debug_info("nullprpl",
"%s is sending message to chat room %s: %s\n", username,
@@ -990,11 +1027,17 @@
null_set_chat_topic(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
gint id, const gchar *topic)
{
- PurpleConversation *chat = purple_conversations_find_chat(gc, id);
+ PurpleConversation *chat = NULL;
+ PurpleConversationManager *manager = NULL;
const char *last_topic;
- if (!chat)
+ manager = purple_conversation_manager_get_default();
+ chat = purple_conversation_manager_find_chat_by_id(manager,
+ purple_connection_get_account(gc),
+ id);
+ if (!chat) {
return;
+ }
purple_debug_info("nullprpl", "%s sets topic of chat room '%s' to '%s'\n",
purple_account_get_username(purple_connection_get_account(gc)),
@@ -1016,6 +1059,7 @@
static PurpleRoomlist *null_roomlist_get_list(PurpleConnection *gc) {
const char *username = purple_account_get_username(purple_connection_get_account(gc));
+ PurpleConversationManager *manager;
PurpleRoomlist *roomlist = purple_roomlist_new(purple_connection_get_account(gc));
GList *fields = NULL;
PurpleRoomlistField *field;
@@ -1034,9 +1078,11 @@
purple_roomlist_set_fields(roomlist, fields);
+ manager = purple_conversation_manager_get_default();
+
/* add each chat room. the chat ids are cached in seen_ids so that each room
* is only returned once, even if multiple users are in it. */
- for (chats = purple_conversations_get_all(); chats; chats = g_list_next(chats)) {
+ for (chats = purple_conversation_manager_get_all(manager); chats; chats = g_list_next(chats)) {
PurpleChatConversation *chat = NULL;
PurpleRoomlistRoom *room = NULL;
const gchar *name = NULL;
--- a/libpurple/protocols/sametime/sametime.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/sametime/sametime.c Mon Jul 26 04:13:19 2021 -0500
@@ -1776,14 +1776,19 @@
struct mwPurpleProtocolData *pd;
PurpleAccount *acct;
PurpleConversation *im;
+ PurpleConversationManager *manager;
PurpleBuddy *buddy;
char *who = from->user_id;
char *msg, *msg2;
pd = mwSession_getClientData(s);
acct = purple_connection_get_account(pd->gc);
- im = purple_conversations_find_im_with_account(who, acct);
- if(! im) im = purple_im_conversation_new(acct, who);
+
+ manager = purple_conversation_manager_get_default();
+ im = purple_conversation_manager_find_im(manager, acct, who);
+ if(!PURPLE_IS_IM_CONVERSATION(im)) {
+ im = purple_im_conversation_new(acct, who);
+ }
buddy = purple_blist_find_buddy(acct, who);
if(buddy) who = (char *) purple_buddy_get_contact_alias(buddy);
@@ -1888,13 +1893,9 @@
#define CONF_TO_ID(conf) (GPOINTER_TO_INT(conf))
#define ID_TO_CONF(pd, id) (conf_find_by_id((pd), (id)))
-#define CHAT_TO_ID(chat) (purple_chat_conversation_get_id(chat))
-#define ID_TO_CHAT(id) (purple_conversations_find_chat(id))
-
#define CHAT_TO_CONF(pd, chat) (ID_TO_CONF((pd), CHAT_TO_ID(chat)))
#define CONF_TO_CHAT(conf) (ID_TO_CHAT(CONF_TO_ID(conf)))
-
static struct mwConference *
conf_find_by_id(struct mwPurpleProtocolData *pd, int id) {
@@ -1907,7 +1908,7 @@
struct mwConference *c = l->data;
PurpleChatConversation *h = mwConference_getClientData(c);
- if(CHAT_TO_ID(h) == id) {
+ if(purple_chat_conversation_get_id(h) == id) {
conf = c;
break;
}
@@ -2461,6 +2462,7 @@
struct mwSession *session;
struct mwPurpleProtocolData *pd;
PurpleConnection *gc;
+ PurpleConversationManager *manager;
PurpleAccount *acct;
struct mwIdBlock *idb;
@@ -2473,7 +2475,9 @@
idb = mwConversation_getTarget(conv);
- return purple_conversations_find_im_with_account(idb->user, acct);
+ manager = purple_conversation_manager_get_default();
+
+ return purple_conversation_manager_find_im(manager, acct, idb->user);
}
@@ -2859,7 +2863,7 @@
struct mwPlace *p = l->data;
PurpleChatConversation *h = mwPlace_getClientData(p);
- if(CHAT_TO_ID(h) == id) {
+ if(purple_chat_conversation_get_id(h) == id) {
place = p;
break;
}
@@ -4042,12 +4046,17 @@
static void notify_im(PurpleConnection *gc, GList *row, void *user_data) {
PurpleAccount *acct;
PurpleConversation *im;
+ PurpleConversationManager *manager;
char *id;
acct = purple_connection_get_account(gc);
id = g_list_nth_data(row, 1);
- im = purple_conversations_find_im_with_account(id, acct);
- if(! im) im = purple_im_conversation_new(acct, id);
+
+ manager = purple_conversation_manager_get_default();
+ im = purple_conversation_manager_find_im(manager, acct, id);
+ if(!PURPLE_IS_IM_CONVERSATION(im)) {
+ im = purple_im_conversation_new(acct, id);
+ }
purple_conversation_present(im);
}
--- a/libpurple/protocols/silc/buddy.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/silc/buddy.c Mon Jul 26 04:13:19 2021 -0500
@@ -77,6 +77,7 @@
case SILC_KEY_AGREEMENT_OK:
{
PurpleConversation *im;
+ PurpleConversationManager *manager;
char tmp[128];
/* Set the private key for this client */
@@ -85,10 +86,11 @@
NULL, NULL, key);
silc_ske_free_key_material(key);
+ manager = purple_conversation_manager_get_default();
/* Open IM window */
- im = purple_conversations_find_im_with_account(
- client_entry->nickname, sg->account);
+ im = purple_conversation_manager_find_im(manager, sg->account,
+ client_entry->nickname);
if (im) {
/* we don't have windows in the core anymore...but we may want to
* provide some method for asking the UI to show the window
--- a/libpurple/protocols/silc/ops.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/silc/ops.c Mon Jul 26 04:13:19 2021 -0500
@@ -95,6 +95,7 @@
SilcUInt32 data_len;
PurpleMessageFlags cflags = 0;
PurpleConversation *chat = NULL;
+ PurpleConversationManager *manager = NULL;
SilcBool ret = FALSE;
if (!mime)
@@ -180,6 +181,8 @@
goto out;
}
+ manager = purple_conversation_manager_get_default();
+
/* Image */
if (g_str_has_prefix(type, "image/")) {
char tmp[32];
@@ -194,16 +197,20 @@
for (l = sg->grps; l; l = l->next)
if (((SilcPurplePrvgrp)l->data)->key == key) {
prv = l->data;
- chat = purple_conversations_find_chat_with_account(
- prv->channel, sg->account);
+ chat = purple_conversation_manager_find_chat(manager,
+ sg->account,
+ prv->channel);
break;
}
}
- if (channel && !chat)
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
- if (channel && !chat)
+ if (channel && !chat) {
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
+ }
+
+ if (channel && !chat) {
goto out;
+ }
img = purple_image_new_from_data(data, data_len);
if (!img)
@@ -268,11 +275,14 @@
PurpleConnection *gc = client->application;
SilcPurple sg = purple_connection_get_protocol_data(gc);
PurpleConversation *chat = NULL;
+ PurpleConversationManager *manager = NULL;
char *msg, *tmp;
if (!message)
return;
+ manager = purple_conversation_manager_get_default();
+
if (key) {
GList *l;
SilcPurplePrvgrp prv;
@@ -280,16 +290,19 @@
for (l = sg->grps; l; l = l->next)
if (((SilcPurplePrvgrp)l->data)->key == key) {
prv = l->data;
- chat = purple_conversations_find_chat_with_account(
- prv->channel, sg->account);
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ prv->channel);
break;
}
}
- if (!chat)
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
- if (!chat)
+ if (!chat) {
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
+ }
+
+ if (!chat) {
return;
+ }
if (flags & SILC_MESSAGE_FLAG_SIGNED &&
purple_account_get_bool(sg->account, "sign-verify", FALSE)) {
@@ -365,14 +378,17 @@
PurpleConnection *gc = client->application;
SilcPurple sg = purple_connection_get_protocol_data(gc);
PurpleConversation *convo;
+ PurpleConversationManager *manager = NULL;
char *msg, *tmp;
- if (!message)
+ if (!message) {
return;
+ }
+ manager = purple_conversation_manager_get_default();
/* XXX - Should this be PURPLE_CONV_TYPE_IM? */
- convo = purple_conversations_find_with_account(
- sender->nickname, sg->account);
+ convo = purple_conversation_manager_find(manager, sg->account,
+ sender->nickname);
if (flags & SILC_MESSAGE_FLAG_SIGNED &&
purple_account_get_bool(sg->account, "sign-verify", FALSE)) {
@@ -445,6 +461,7 @@
{
va_list va;
PurpleConnection *gc = client->application;
+ PurpleConversationManager *manager;
SilcPurple sg = purple_connection_get_protocol_data(gc);
PurpleAccount *account = purple_connection_get_account(gc);
PurpleConversation *chat;
@@ -464,6 +481,8 @@
va_start(va, type);
memset(buf, 0, sizeof(buf));
+ manager = purple_conversation_manager_get_default();
+
switch (type) {
case SILC_NOTIFY_TYPE_NONE:
@@ -490,10 +509,11 @@
if (client_entry == conn->local_entry)
break;
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
+ if (!chat) {
break;
+ }
/* Join user to channel */
g_snprintf(buf, sizeof(buf), "%s@%s",
@@ -507,10 +527,11 @@
client_entry = va_arg(va, SilcClientEntry);
channel = va_arg(va, SilcChannelEntry);
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
+ if (!chat) {
break;
+ }
/* Remove user from channel */
purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat),
@@ -525,10 +546,11 @@
/* Remove from all channels */
silc_hash_table_list(client_entry->channels, &htl);
while (silc_hash_table_get(&htl, NULL, (void *)&chu)) {
- chat = purple_conversations_find_chat_with_account(
- chu->channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ chu->channel->channel_name);
+ if (!chat) {
continue;
+ }
purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat),
client_entry->nickname,
tmp);
@@ -545,13 +567,15 @@
tmp = va_arg(va, char *);
channel = va_arg(va, SilcChannelEntry);
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
+ if (!chat) {
break;
+ }
- if (!tmp)
+ if (!tmp) {
break;
+ }
esc = g_markup_escape_text(tmp, -1);
tmp2 = purple_markup_linkify(esc);
@@ -604,13 +628,15 @@
/* Change nick on all channels */
silc_hash_table_list(client_entry->channels, &htl);
while (silc_hash_table_get(&htl, NULL, (void *)&chu)) {
- chat = purple_conversations_find_chat_with_account(
- chu->channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ chu->channel->channel_name);
+ if (!chat) {
continue;
- if (purple_chat_conversation_has_user(PURPLE_CHAT_CONVERSATION(chat), client_entry->nickname))
+ }
+ if (purple_chat_conversation_has_user(PURPLE_CHAT_CONVERSATION(chat), client_entry->nickname)) {
purple_chat_conversation_rename_user(PURPLE_CHAT_CONVERSATION(chat),
tmp, name);
+ }
}
silc_hash_table_list_reset(&htl);
@@ -627,19 +653,23 @@
(void)va_arg(va, SilcDList);
channel = va_arg(va, SilcChannelEntry);
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
+ if (!chat) {
break;
+ }
- if (idtype == SILC_ID_CLIENT)
+ if (idtype == SILC_ID_CLIENT) {
name = ((SilcClientEntry)entry)->nickname;
- else if (idtype == SILC_ID_SERVER)
+ } else if (idtype == SILC_ID_SERVER) {
name = ((SilcServerEntry)entry)->server_name;
- else
+ } else {
name = ((SilcChannelEntry)entry)->channel_name;
- if (!name)
+ }
+
+ if (!name) {
break;
+ }
if (mode) {
silcpurple_get_chmode_string(mode, buf2, sizeof(buf2));
@@ -663,19 +693,23 @@
client_entry2 = va_arg(va, SilcClientEntry);
channel = va_arg(va, SilcChannelEntry);
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
+ if (!chat) {
break;
+ }
- if (idtype == SILC_ID_CLIENT)
+ if (idtype == SILC_ID_CLIENT) {
name = ((SilcClientEntry)entry)->nickname;
- else if (idtype == SILC_ID_SERVER)
+ } else if (idtype == SILC_ID_SERVER) {
name = ((SilcServerEntry)entry)->server_name;
- else
+ } else {
name = ((SilcChannelEntry)entry)->channel_name;
- if (!name)
+ }
+
+ if (!name) {
break;
+ }
if (mode) {
silcpurple_get_chumode_string(mode, buf2, sizeof(buf2));
@@ -709,10 +743,11 @@
client_entry2 = va_arg(va, SilcClientEntry);
channel = va_arg(va, SilcChannelEntry);
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
+ if (!chat) {
break;
+ }
if (client_entry == conn->local_entry) {
/* Remove us from channel */
@@ -760,10 +795,11 @@
/* Remove us from all channels */
silc_hash_table_list(client_entry->channels, &htl);
while (silc_hash_table_get(&htl, NULL, (void *)&chu)) {
- chat = purple_conversations_find_chat_with_account(
- chu->channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ chu->channel->channel_name);
+ if (!chat) {
continue;
+ }
purple_conversation_write_system_message(chat, buf, 0);
purple_serv_got_chat_left(gc, purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(chat)));
}
@@ -790,10 +826,11 @@
/* Remove user from all channels */
silc_hash_table_list(client_entry->channels, &htl);
while (silc_hash_table_get(&htl, NULL, (void *)&chu)) {
- chat = purple_conversations_find_chat_with_account(
- chu->channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ chu->channel->channel_name);
+ if (!chat) {
continue;
+ }
purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat),
client_entry->nickname, tmp);
}
@@ -814,10 +851,11 @@
/* Remove from all channels */
silc_hash_table_list(client_entry->channels, &htl);
while (silc_hash_table_get(&htl, NULL, (void *)&chu)) {
- chat = purple_conversations_find_chat_with_account(
- chu->channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ chu->channel->channel_name);
+ if (!chat) {
continue;
+ }
purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat),
client_entry->nickname,
_("Server signoff"));
@@ -990,6 +1028,9 @@
PurpleConnection *gc = client->application;
SilcPurple sg = purple_connection_get_protocol_data(gc);
PurpleConversation *chat;
+ PurpleConversationManager *manager;
+
+ manager = purple_conversation_manager_get_default();
switch (command) {
case SILC_COMMAND_JOIN:
@@ -1016,10 +1057,11 @@
/* Add channel to Purple */
channel->context = SILC_32_TO_PTR(++sg->channel_ids);
purple_serv_got_joined_chat(gc, sg->channel_ids, channel->channel_name);
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
+ if (!chat) {
return;
+ }
/* Add all users to channel */
while (silc_hash_table_get(user_list, NULL, (void *)&chu)) {
@@ -1310,8 +1352,8 @@
channel = va_arg(ap, SilcChannelEntry);
- chat = purple_conversations_find_chat_with_account(
- channel->channel_name, sg->account);
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ channel->channel_name);
if (!chat) {
purple_debug_error("silc", "Got a topic for %s, which doesn't exist\n",
channel->channel_name);
@@ -1346,14 +1388,16 @@
/* Change nick on all channels */
silc_hash_table_list(local_entry->channels, &htl);
while (silc_hash_table_get(&htl, NULL, (void *)&chu)) {
- chat = purple_conversations_find_chat_with_account(
- chu->channel->channel_name, sg->account);
- if (!chat)
+ chat = purple_conversation_manager_find_chat(manager, sg->account,
+ chu->channel->channel_name);
+ if (!chat) {
continue;
+ }
oldnick = purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(chat));
if (!purple_strequal(oldnick,
purple_normalize(purple_conversation_get_account(chat),
- newnick))) {
+ newnick)))
+ {
purple_chat_conversation_rename_user(PURPLE_CHAT_CONVERSATION(chat),
oldnick, newnick);
--- a/libpurple/protocols/silc/silc.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/silc/silc.c Mon Jul 26 04:13:19 2021 -0500
@@ -1401,6 +1401,7 @@
SilcPurple sg = purple_connection_get_protocol_data(gc);
SilcPurpleIM im = context;
PurpleConversation *convo;
+ PurpleConversationManager *manager;
char tmp[256];
SilcClientEntry client_entry;
SilcDList list;
@@ -1408,13 +1409,15 @@
const gchar *me;
PurpleMessage *msg;
- convo = purple_conversations_find_im_with_account(im->nick,
- sg->account);
- if (!convo)
+ manager = purple_conversation_manager_get_default();
+ convo = purple_conversation_manager_find_im(manager, sg->account, im->nick);
+ if (!convo) {
return;
+ }
- if (!clients)
+ if (!clients) {
goto err;
+ }
if (silc_dlist_count(clients) > 1) {
/* Find the correct one. The im->nick might be a formatted nick
@@ -1604,9 +1607,15 @@
if (gc == NULL)
return PURPLE_CMD_RET_FAILED;
- if(args && args[0])
- chat = purple_conversations_find_chat_with_account(args[0],
- purple_connection_get_account(gc));
+ if(args && args[0]) {
+ PurpleConversationManager *manager;
+
+ manager = purple_conversation_manager_get_default();
+
+ chat = purple_conversation_manager_find_chat(manager,
+ purple_connection_get_account(gc),
+ args[0]);
+ }
if (chat != NULL)
id = purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(chat));
--- a/libpurple/protocols/zephyr/zephyr.c Mon Jul 26 03:56:06 2021 -0500
+++ b/libpurple/protocols/zephyr/zephyr.c Mon Jul 26 04:13:19 2021 -0500
@@ -315,6 +315,7 @@
gchar *send_inst_utf8;
GSList *l = g_slist_find_custom(zephyr->subscrips, &sub, (GCompareFunc)zephyr_triple_subset);
PurpleConversation *gcc;
+ PurpleConversationManager *manager;
if (!l) {
/* This is a server supplied subscription */
@@ -340,7 +341,10 @@
}
}
- gcc = purple_conversations_find_chat_with_account(zt->name, purple_connection_get_account(gc));
+ manager = purple_conversation_manager_get_default();
+ gcc = purple_conversation_manager_find_chat(manager,
+ purple_connection_get_account(gc),
+ zt->name);
if (!purple_chat_conversation_has_user(PURPLE_CHAT_CONVERSATION(gcc), stripped_sender)) {
GInetAddress *inet_addr = NULL;
gchar *ipaddr = NULL;
@@ -924,6 +928,7 @@
zephyr_triple *zt;
const char *sig;
PurpleConversation *gcc;
+ PurpleConversationManager *manager;
char *inst;
char *recipient;
zephyr_account *zephyr = purple_connection_get_protocol_data(gc);
@@ -937,7 +942,10 @@
zt = l->data;
sig = zephyr_get_signature();
- gcc = purple_conversations_find_chat_with_account(zt->name, purple_connection_get_account(gc));
+ manager = purple_conversation_manager_get_default();
+ gcc = purple_conversation_manager_find_chat(manager,
+ purple_connection_get_account(gc),
+ zt->name);
if (!(inst = (char *)purple_chat_conversation_get_topic(PURPLE_CHAT_CONVERSATION(gcc))))
inst = g_strdup("PERSONAL");
@@ -1354,6 +1362,7 @@
{
zephyr_triple *zt;
PurpleConversation *gcc;
+ PurpleConversationManager *manager;
gchar *topic_utf8;
zephyr_account *zephyr = purple_connection_get_protocol_data(gc);
GSList *l;
@@ -1364,7 +1373,10 @@
}
zt = l->data;
- gcc = purple_conversations_find_chat_with_account(zt->name, purple_connection_get_account(gc));
+ manager = purple_conversation_manager_get_default();
+ gcc = purple_conversation_manager_find_chat(manager,
+ purple_connection_get_account(gc),
+ zt->name);
topic_utf8 = convert_to_utf8(topic, zephyr->encoding);
purple_chat_conversation_set_topic(PURPLE_CHAT_CONVERSATION(gcc), zephyr->username, topic_utf8);