(function () { async function loadSkills() { var grid = document.getElementById("skill-grid"); if (!grid) return; var res = await fetch("/api/skills", { credentials: "include" }); if (!res.ok) { grid.innerHTML = '
Sign in first to browse skills.
'; return; } var data = await res.json(); grid.innerHTML = ""; data.skills.forEach(function (s) { var card = document.createElement("article"); card.className = "card"; card.innerHTML = "" + escapeHtml(s.description) + "
" + "Seller: " + escapeHtml(s.owner_email || "unknown") + "
" + "$" + (s.price_cents / 100).toFixed(2) + "
" + ""; grid.appendChild(card); }); grid.querySelectorAll("[data-skill-id]").forEach(function (btn) { btn.addEventListener("click", onBuy); }); } async function onBuy(event) { var skillId = event.currentTarget.getAttribute("data-skill-id"); var body = new URLSearchParams(); body.set("skill_id", skillId); var res = await fetch("/api/purchase", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: body.toString() }); if (!res.ok) { alert("Purchase failed."); return; } window.location.href = "/purchase"; } async function loadMySkills() { var grid = document.getElementById("my-skill-grid"); if (!grid) return; var res = await fetch("/api/my-skills", { credentials: "include" }); if (!res.ok) { grid.innerHTML = 'Sign in first to view your purchased skills.
'; return; } var data = await res.json(); grid.innerHTML = ""; data.skills.forEach(function (s) { var card = document.createElement("article"); card.className = "card"; card.innerHTML = "" + escapeHtml(s.description) + "
" + "Purchased from: " + escapeHtml(s.owner_email || "unknown") + "
" + "