| 823 g_return_val_if_fail(name != NULL, NULL); |
823 g_return_val_if_fail(name != NULL, NULL); |
| 824 |
824 |
| 825 chat = purple_chat_conversation_new(account, name); |
825 chat = purple_chat_conversation_new(account, name); |
| 826 g_return_val_if_fail(chat != NULL, NULL); |
826 g_return_val_if_fail(chat != NULL, NULL); |
| 827 |
827 |
| 828 if (!g_slist_find(gc->buddy_chats, PURPLE_CONVERSATION(chat))) |
828 if (!g_slist_find(purple_connection_get_active_chats(gc), chat)) |
| 829 gc->buddy_chats = g_slist_append(gc->buddy_chats, PURPLE_CONVERSATION(chat)); |
829 _purple_connection_add_active_chat(gc, chat); |
| 830 |
830 |
| 831 purple_chat_conversation_set_id(chat, id); |
831 purple_chat_conversation_set_id(chat, id); |
| 832 |
832 |
| 833 purple_signal_emit(purple_conversations_get_handle(), "chat-joined", chat); |
833 purple_signal_emit(purple_conversations_get_handle(), "chat-joined", chat); |
| 834 |
834 |
| 838 void serv_got_chat_left(PurpleConnection *g, int id) |
838 void serv_got_chat_left(PurpleConnection *g, int id) |
| 839 { |
839 { |
| 840 GSList *bcs; |
840 GSList *bcs; |
| 841 PurpleChatConversation *chat = NULL; |
841 PurpleChatConversation *chat = NULL; |
| 842 |
842 |
| 843 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
843 for (bcs = purple_connection_get_active_chats(g); bcs != NULL; bcs = bcs->next) { |
| 844 chat = PURPLE_CHAT_CONVERSATION(bcs->data); |
844 chat = PURPLE_CHAT_CONVERSATION(bcs->data); |
| 845 |
845 |
| 846 if (purple_chat_conversation_get_id(chat) == id) |
846 if (purple_chat_conversation_get_id(chat) == id) |
| 847 break; |
847 break; |
| 848 } |
848 } |
| 849 |
849 |
| 850 purple_debug(PURPLE_DEBUG_INFO, "server", "Leaving room: %s\n", |
850 purple_debug(PURPLE_DEBUG_INFO, "server", "Leaving room: %s\n", |
| 851 purple_conversation_get_name(PURPLE_CONVERSATION(chat))); |
851 purple_conversation_get_name(PURPLE_CONVERSATION(chat))); |
| 852 |
852 |
| 853 g->buddy_chats = g_slist_remove(g->buddy_chats, chat); |
853 _purple_connection_remove_active_chat(g, chat); |
| 854 |
854 |
| 855 purple_chat_conversation_leave(chat); |
855 purple_chat_conversation_leave(chat); |
| 856 |
856 |
| 857 purple_signal_emit(purple_conversations_get_handle(), "chat-left", chat); |
857 purple_signal_emit(purple_conversations_get_handle(), "chat-left", chat); |
| 858 } |
858 } |
| 872 int plugin_return; |
872 int plugin_return; |
| 873 |
873 |
| 874 g_return_if_fail(who != NULL); |
874 g_return_if_fail(who != NULL); |
| 875 g_return_if_fail(message != NULL); |
875 g_return_if_fail(message != NULL); |
| 876 |
876 |
| 877 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
877 for (bcs = purple_connection_get_active_chats(g); bcs != NULL; bcs = bcs->next) { |
| 878 chat = PURPLE_CHAT_CONVERSATION(bcs->data); |
878 chat = PURPLE_CHAT_CONVERSATION(bcs->data); |
| 879 |
879 |
| 880 if (purple_chat_conversation_get_id(chat) == id) |
880 if (purple_chat_conversation_get_id(chat) == id) |
| 881 break; |
881 break; |
| 882 } |
882 } |