static void update_chat_handler (struct tgl_state *TLS, struct tgl_chat *chat, unsigned flags) { //tgl_do_get_chat_info (TLS, chat->id, 0, on_chat_get_info, 0); PurpleChat *ch = p2tgl_chat_find (TLS, chat->id); if (flags & TGL_UPDATE_CREATED) { if (!ch) { ch = p2tgl_chat_new (TLS, chat); purple_blist_add_chat(ch, NULL, NULL); } } if (flags & TGL_UPDATE_TITLE && ch) { purple_blist_alias_chat (ch, chat->print_title); } if (flags & (TGL_UPDATE_MEMBERS | TGL_UPDATE_ADMIN)) { on_update_chat_participants (TLS, chat); } if (flags & TGL_UPDATE_DELETED) { PurpleChat *ch = p2tgl_chat_find (TLS, chat->id); if (ch) { purple_blist_remove_chat (ch); } else { warning ("Cannot delete chat %d, not in buddy list.", chat->id); } } }
void tgp_chat_on_loaded_chat_full (struct tgl_state *TLS, struct tgl_chat *C) { connection_data *conn = TLS->ev_base; PurpleChat *PC = p2tgl_chat_find (TLS, C->id); if (!PC) { PC = p2tgl_chat_new (TLS, C); if (purple_account_get_bool (conn->pa, TGP_KEY_JOIN_GROUP_CHATS, TGP_DEFAULT_JOIN_GROUP_CHATS)) { purple_blist_add_chat (PC, NULL, NULL); } } p2tgl_chat_update (PC, C->id, C->admin_id, C->print_title); }