import Stateful from "/script/silver.min.js" const releaseID = document.getElementById("release").dataset.id; const artwork_input = document.getElementById("artwork"); const type_input = document.getElementById("type"); const desc_input = document.getElementById("description"); const date_input = document.getElementById("release-date"); const buyname_input = document.getElementById("buyname"); const buylink_input = document.getElementById("buylink"); const vis_input = document.getElementById("visibility"); const save_btn = document.getElementById("save"); let token = atob(localStorage.getItem("arime-token")); let edited = new Stateful(false); let release_data = update_data(undefined); function update_data(old) { let release_data = { visible: vis_input.value === "true", title: undefined, description: desc_input.value, type: type_input.value, releaseDate: date_input.value, artwork: artwork_input.attributes.src.value, buyname: buyname_input.value, buylink: buylink_input.value, }; if (release_data && release_data != old) { edited.set(true); } return release_data; } function save_release() { console.table(release_data); edited.set(false); (async () => { const res = await fetch( "/api/v1/music/" + releaseID, { method: "PUT", body: JSON.stringify(release_data), headers: { "Content-Type": "application/json", "Authorisation": "Bearer " + token, }, }); if (!res.ok) { const text = await res.text(); console.error(text); alert(text); return; } location = location; })(); } window.save_release = save_release; edited.onUpdate(edited => { save_btn.disabled = !edited; }) artwork_input.addEventListener("click", () => { release_data = update_data(release_data); }); type_input.addEventListener("change", () => { release_data = update_data(release_data); }); desc_input.addEventListener("change", () => { release_data = update_data(release_data); }); date_input.addEventListener("change", () => { release_data = update_data(release_data); }); buyname_input.addEventListener("change", () => { release_data = update_data(release_data); }); buylink_input.addEventListener("change", () => { release_data = update_data(release_data); }); vis_input.addEventListener("change", () => { release_data = update_data(release_data); }); save_btn.addEventListener("click", () => { if (!edited.get()) return; save_release(); })