arimelody.me/admin/static/edit-release.js
ari melody 10f19d46db release edit page! + a lot of other stuff oml
Signed-off-by: ari melody <ari@arimelody.me>
2024-08-31 01:52:39 +01:00

97 lines
2.6 KiB
JavaScript

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();
})