async function loadUsers() { const r = await fetch("/admin/users"); const users = await r.json(); const container = document.getElementById("users"); container.innerHTML = ""; users.forEach(u => { const div = document.createElement("div"); div.className = "user-card"; div.innerHTML = ` ${u.name} (${u.email}) — ${u.role} `; container.appendChild(div); }); } async function selectUser(email) { const r = await fetch(`/admin/conversations/${email}`); const convs = await r.json(); const details = document.getElementById("user-details"); details.innerHTML = `

${email}

Conversations

ACL

`; loadACL(email); } async function loadPlans() { const r = await fetch("/admin/plans"); const plans = await r.json(); const div = document.getElementById("plans"); div.innerHTML = plans.map(p => `
${p.name}
R$ ${p.price_monthly}/mês
Prioridade: ${p.priority_queue}
`).join(""); } async function loadACL(email) { const r = await fetch("/admin/users"); const users = await r.json(); const u = users.find(x => x.email === email); const aclDiv = document.getElementById("acl"); aclDiv.innerHTML = ` ${Object.keys(u).map(key => { if (typeof u[key] === "boolean") { return `
`; } return ""; }).join("")} `; } async function updateACL(email, key, value) { await fetch(`/admin/update_acl/${email}`, { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({[key]: value}) }); } async function promote(email) { await fetch(`/admin/promote/${email}`, {method: "POST"}); loadUsers(); } window.onload = loadUsers;