pidgin/pidgin

f2f397659f30
Parents f4023e6ebd5d
Children 19e53c9cab73
Convert Finch to the PurpleConversationManager API

Testing Done:
Compiled

Reviewed at https://reviews.imfreedom.org/r/751/
--- a/finch/gntblist.c Thu Jun 17 23:39:39 2021 -0500
+++ b/finch/gntblist.c Thu Jun 17 23:40:07 2021 -0500
@@ -613,11 +613,13 @@
join_chat(PurpleChat *chat)
{
PurpleAccount *account = purple_chat_get_account(chat);
+ PurpleConversationManager *manager;
const char *name;
PurpleConversation *conv;
name = purple_chat_get_name_only(chat);
- conv = purple_conversations_find_chat_with_account(name, account);
+ manager = purple_conversation_manager_get_default();
+ conv = purple_conversation_manager_find_chat(manager, account, name);
if (!conv || purple_chat_conversation_has_left(PURPLE_CHAT_CONVERSATION(conv))) {
purple_serv_join_chat(purple_account_get_connection(account),
@@ -919,11 +921,16 @@
{
PurpleBuddy *buddy = (PurpleBuddy *)node;
PurpleConversation *im;
- im = purple_conversations_find_im_with_account(purple_buddy_get_name(buddy),
- purple_buddy_get_account(buddy));
- if (!im) {
- im = purple_im_conversation_new(purple_buddy_get_account(buddy),
- purple_buddy_get_name(buddy));
+ PurpleConversationManager *manager;
+
+ manager = purple_conversation_manager_get_default();
+ im = purple_conversation_manager_find_im(manager,
+ purple_buddy_get_account(buddy),
+ purple_buddy_get_name(buddy));
+
+ if(!PURPLE_IS_IM_CONVERSATION(im)) {
+ im = purple_im_conversation_new(purple_buddy_get_account(buddy),
+ purple_buddy_get_name(buddy));
} else {
FinchConv *ggconv = FINCH_CONV(im);
gnt_window_present(ggconv->window);
@@ -2659,6 +2666,7 @@
PurpleAccount *account;
const char *name;
PurpleConnection *gc;
+ PurpleConversationManager *manager;
PurpleChat *chat;
GHashTable *hash = NULL;
PurpleConversation *conv;
@@ -2670,10 +2678,13 @@
return;
gc = purple_account_get_connection(account);
+ manager = purple_conversation_manager_get_default();
+
/* Create a new conversation now. This will give focus to the new window.
* But it's necessary to pretend that we left the chat, because otherwise
* a new conversation window will pop up when we finally join the chat. */
- if (!(conv = purple_conversations_find_chat_with_account(name, account))) {
+ conv = purple_conversation_manager_find_chat(manager, account, name);
+ if(!PURPLE_IS_CHAT_CONVERSATION(conv)) {
conv = purple_chat_conversation_new(account, name);
purple_chat_conversation_leave(PURPLE_CHAT_CONVERSATION(conv));
} else {
--- a/finch/gntconv.c Thu Jun 17 23:39:39 2021 -0500
+++ b/finch/gntconv.c Thu Jun 17 23:40:07 2021 -0500
@@ -197,19 +197,39 @@
{
PurpleBlistNode *node;
PurpleBuddy *buddy = purple_blist_find_buddy(account, name);
+ PurpleContact *contact;
PurpleConversation *im = NULL;
- if (!buddy)
+ if(!PURPLE_IS_BUDDY(buddy)) {
return NULL;
+ }
+
+ contact = purple_buddy_get_contact(buddy);
+
+ node = purple_blist_node_get_first_child(PURPLE_BLIST_NODE(contact));
+ while(node != NULL) {
+ PurpleBuddy *cbuddy;
+ PurpleConversationManager *manager;
+
+ if(node == PURPLE_BLIST_NODE(buddy)) {
+ node = node->next;
- for (node = purple_blist_node_get_first_child(purple_blist_node_get_parent((PurpleBlistNode*)buddy));
- node; node = purple_blist_node_get_sibling_next(node)) {
- if (node == (PurpleBlistNode*)buddy)
continue;
- if ((im = purple_conversations_find_im_with_account(
- purple_buddy_get_name((PurpleBuddy*)node), purple_buddy_get_account((PurpleBuddy*)node))) != NULL)
+ }
+
+ cbuddy = PURPLE_BUDDY(node);
+ manager = purple_conversation_manager_get_default();
+ im = purple_conversation_manager_find_im(manager,
+ purple_buddy_get_account(cbuddy),
+ purple_buddy_get_name(cbuddy));
+
+ if(PURPLE_IS_IM_CONVERSATION(im)) {
break;
+ }
+
+ node = node->next;
}
+
return im;
}
@@ -227,13 +247,16 @@
{
FinchConv *ggc;
PurpleConversation *conv;
+ PurpleConversationManager *manager;
PurpleIMConversation *im;
char *title, *str;
- conv = purple_conversations_find_im_with_account(who, account);
+ manager = purple_conversation_manager_get_default();
+ conv = purple_conversation_manager_find_im(manager, account, who);
- if (!conv)
+ if(!conv) {
return;
+ }
im = PURPLE_IM_CONVERSATION(conv);
ggc = FINCH_CONV(conv);
@@ -281,9 +304,11 @@
static void
account_signed_on_off(PurpleConnection *gc, gpointer null)
{
+ PurpleConversationManager *manager;
GList *list, *l;
- list = purple_conversations_get_all();
+ manager = purple_conversation_manager_get_default();
+ list = purple_conversation_manager_get_all(manager);
for(l = list; l != NULL; l = l->next) {
PurpleConversation *conv = NULL;
@@ -349,9 +374,13 @@
static void
account_signing_off(PurpleConnection *gc)
{
- GList *list = purple_conversations_get_all();
+ PurpleConversationManager *manager;
+ GList *list;
PurpleAccount *account = purple_connection_get_account(gc);
+ manager = purple_conversation_manager_get_default();
+ list = purple_conversation_manager_get_all(manager);
+
/* We are about to sign off. See which chats we are currently in, and mark
* them for rejoin on reconnect. */
while(list != NULL) {
--- a/finch/plugins/gnttinyurl.c Thu Jun 17 23:39:39 2021 -0500
+++ b/finch/plugins/gnttinyurl.c Thu Jun 17 23:40:07 2021 -0500
@@ -199,9 +199,13 @@
{
CbInfo *data = (CbInfo *)_data;
PurpleConversation *conv = data->conv;
- GList *convs = purple_conversations_get_all();
+ PurpleConversationManager *manager;
+ GList *convs;
const gchar *url;
+ manager = purple_conversation_manager_get_default();
+ convs = purple_conversation_manager_get_all(manager);
+
if (SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) {
url = msg->response_body->data;
g_hash_table_insert(tinyurl_cache, data->original_url, g_strdup(url));