aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordequis <dx@dxzone.com.ar>2016-11-28 02:52:22 -0300
committerdequis <dx@dxzone.com.ar>2016-11-28 02:53:50 -0300
commit87872c712535013cbba81653021a41091a9ed7f2 (patch)
tree1091230a4a256bd5648d64fcdb5c06ec19396741
parented1f5e8de07be7c90e2e8cd9020727d53d6b04c7 (diff)
purple: Use roomlist_room_serialize, fixes joining jabber chats
The room names in 'chat list' were missing the server part. Jabber is the only prpl which implements this method as far as I can see, and it's needed to get the full name.
-rw-r--r--protocols/purple/purple.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c
index c7123798..8b3b8c7c 100644
--- a/protocols/purple/purple.c
+++ b/protocols/purple/purple.c
@@ -1386,16 +1386,30 @@ static void prplcb_roomlist_set_fields(PurpleRoomlist *list, GList *fields)
}
}
+static char *prplcb_roomlist_get_room_name(PurpleRoomlist *list, PurpleRoomlistRoom *room)
+{
+ struct im_connection *ic = purple_ic_by_pa(list->account);
+ struct purple_data *pd = ic->proto_data;
+ PurplePlugin *prpl = purple_plugins_find_with_id(pd->account->protocol_id);
+ PurplePluginProtocolInfo *pi = prpl->info->extra_info;
+
+ if (pi && pi->roomlist_room_serialize) {
+ return pi->roomlist_room_serialize(room);
+ } else {
+ return g_strdup(purple_roomlist_room_get_name(room));
+ }
+}
+
static void prplcb_roomlist_add_room(PurpleRoomlist *list, PurpleRoomlistRoom *room)
{
bee_chat_info_t *ci;
- const char *title;
+ char *title;
const char *topic;
GList *fields;
struct purple_roomlist_data *rld = list->ui_data;
fields = purple_roomlist_room_get_fields(room);
- title = purple_roomlist_room_get_name(room);
+ title = prplcb_roomlist_get_room_name(list, room);
if (rld->topic >= 0) {
topic = g_list_nth_data(fields, rld->topic);
@@ -1404,7 +1418,7 @@ static void prplcb_roomlist_add_room(PurpleRoomlist *list, PurpleRoomlistRoom *r
}
ci = g_new(bee_chat_info_t, 1);
- ci->title = g_strdup(title);
+ ci->title = title;
ci->topic = g_strdup(topic);
rld->chats = g_slist_prepend(rld->chats, ci);
}