| 324 /* We just signed on. Let's see if there's any chat that we have open, |
324 /* We just signed on. Let's see if there's any chat that we have open, |
| 325 * and hadn't left before the disconnect. */ |
325 * and hadn't left before the disconnect. */ |
| 326 list = purple_get_chats(); |
326 list = purple_get_chats(); |
| 327 while (list) { |
327 while (list) { |
| 328 PurpleConversation *conv = list->data; |
328 PurpleConversation *conv = list->data; |
| 329 gboolean del = FALSE; |
|
| 330 PurpleChat *chat; |
329 PurpleChat *chat; |
| |
330 GHashTable *comps = NULL; |
| 331 |
331 |
| 332 list = list->next; |
332 list = list->next; |
| 333 if (conv->account != gc->account || |
333 if (conv->account != gc->account || |
| 334 !purple_conversation_get_data(conv, "want-to-rejoin")) |
334 !purple_conversation_get_data(conv, "want-to-rejoin")) |
| 335 continue; |
335 continue; |
| 336 |
336 |
| 337 chat = purple_blist_find_chat(conv->account, conv->name); |
337 chat = purple_blist_find_chat(conv->account, conv->name); |
| 338 if (chat == NULL) { |
338 if (chat == NULL) { |
| 339 GHashTable *hash = NULL; |
|
| 340 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) |
339 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) |
| 341 hash = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, conv->name); |
340 comps = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, conv->name); |
| 342 chat = purple_chat_new(gc->account, conv->name, hash); |
341 } else { |
| 343 del = TRUE; |
342 comps = chat->components; |
| 344 } |
343 } |
| 345 serv_join_chat(gc, chat->components); |
344 serv_join_chat(gc, comps); |
| 346 if (del) |
345 if (chat == NULL && comps != NULL) |
| 347 purple_blist_remove_chat(chat); |
346 g_hash_table_destroy(comps); |
| 348 } |
347 } |
| 349 } |
348 } |
| 350 } |
349 } |
| 351 |
350 |
| 352 static gpointer |
351 static gpointer |