Thu, 09 Jul 2015 18:01:25 -0400
facebook: use persistent chat identifiers
--- a/libpurple/protocols/facebook/data.c Mon Jul 06 20:03:34 2015 -0400 +++ b/libpurple/protocols/facebook/data.c Thu Jul 09 18:01:25 2015 -0400 @@ -29,7 +29,6 @@ FbApi *api; PurpleConnection *gc; PurpleRoomlist *roomlist; - gint chatid; GHashTable *icons; GHashTable *icona; }; @@ -215,17 +214,6 @@ return priv->api; } -gint -fb_data_get_chatid(FbData *fata) -{ - FbDataPrivate *priv; - - g_return_val_if_fail(FB_IS_DATA(fata), 0); - priv = fata->priv; - - return priv->chatid++; -} - PurpleConnection * fb_data_get_connection(FbData *fata) {
--- a/libpurple/protocols/facebook/data.h Mon Jul 06 20:03:34 2015 -0400 +++ b/libpurple/protocols/facebook/data.h Thu Jul 09 18:01:25 2015 -0400 @@ -75,9 +75,6 @@ FbApi * fb_data_get_api(FbData *fata); -gint -fb_data_get_chatid(FbData *fata); - PurpleConnection * fb_data_get_connection(FbData *fata);
--- a/libpurple/protocols/facebook/facebook.c Mon Jul 06 20:03:34 2015 -0400 +++ b/libpurple/protocols/facebook/facebook.c Thu Jul 09 18:01:25 2015 -0400 @@ -275,7 +275,7 @@ PurpleConnection *gc; gc = fb_data_get_connection(fata); - id = fb_data_get_chatid(fata); + id = fb_id_hash(&thrd->tid); FB_ID_TO_STR(thrd->tid, tid); chat = purple_serv_got_joined_chat(gc, id, tid); @@ -618,14 +618,23 @@ FbApi *api; FbData *fata; FbId tid; + gint id; + PurpleChatConversation *chat; name = g_hash_table_lookup(data, "name"); g_return_if_fail(name != NULL); + tid = FB_ID_FROM_STR(name); + id = fb_id_hash(&tid); + chat = purple_conversations_find_chat(gc, id); + + if (chat != NULL) { + purple_conversation_present(PURPLE_CONVERSATION(chat)); + return; + } + fata = purple_connection_get_protocol_data(gc); api = fb_data_get_api(fata); - tid = FB_ID_FROM_STR(name); - fb_api_thread_info(api, tid); }