static void update_user_handler (struct tgl_state *TLS, struct tgl_user *user, unsigned flags) { // if (!(flags & TGL_UPDATE_CREATED)) { return; } if (TLS->our_id == tgl_get_peer_id (user->id)) { if (flags & TGL_UPDATE_NAME) { p2tgl_connection_set_display_name (TLS, (tgl_peer_t *)user); } } else { PurpleBuddy *buddy = p2tgl_buddy_find (TLS, user->id); if (!buddy) { buddy = p2tgl_buddy_new (TLS, (tgl_peer_t *)user); purple_blist_add_buddy (buddy, NULL, tggroup, NULL); } if (flags & TGL_UPDATE_CREATED) { purple_buddy_set_protocol_data (buddy, (gpointer)user); p2tgl_prpl_got_user_status (TLS, user->id, &user->status); p2tgl_buddy_update (TLS, (tgl_peer_t *)user, flags); } if (flags & (TGL_UPDATE_NAME | TGL_UPDATE_REAL_NAME | TGL_UPDATE_USERNAME) && buddy) { p2tgl_blist_alias_buddy (buddy, user); } if (flags & TGL_UPDATE_PHOTO) { tgl_do_get_user_info (TLS, user->id, 0, on_user_get_info, 0); } if (flags & TGL_UPDATE_DELETED && buddy) { purple_blist_remove_buddy (buddy); } } }
static void on_update_new_user_status (struct tgl_state *TLS, void *peer) { tgl_peer_t *p = peer; p2tgl_prpl_got_user_status(TLS, p->id, &p->user.status); }
static void update_user_status_handler (struct tgl_state *TLS, struct tgl_user *U) { p2tgl_prpl_got_user_status (TLS, U->id, &U->status); }