80 lines
2.4 KiB
JavaScript
80 lines
2.4 KiB
JavaScript
|
const artistID = document.getElementById("artist").dataset.id;
|
||
|
const nameInput = document.getElementById("name");
|
||
|
const avatarImg = document.getElementById("avatar");
|
||
|
const removeAvatarBtn = document.getElementById("remove-avatar");
|
||
|
const avatarInput = document.getElementById("avatar-file");
|
||
|
const websiteInput = document.getElementById("website");
|
||
|
const saveBtn = document.getElementById("save");
|
||
|
const deleteBtn = document.getElementById("delete");
|
||
|
|
||
|
saveBtn.addEventListener("click", () => {
|
||
|
fetch("/api/v1/artist/" + artistID, {
|
||
|
method: "PUT",
|
||
|
body: JSON.stringify({
|
||
|
name: nameInput.value,
|
||
|
website: websiteInput.value,
|
||
|
avatar: avatarImg.src,
|
||
|
}),
|
||
|
headers: { "Content-Type": "application/json" }
|
||
|
}).then(res => {
|
||
|
if (!res.ok) {
|
||
|
res.text().then(error => {
|
||
|
console.error(error);
|
||
|
alert("Failed to update release: " + error);
|
||
|
});
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
location = location;
|
||
|
});
|
||
|
});
|
||
|
|
||
|
deleteBtn.addEventListener("click", () => {
|
||
|
if (artistID != prompt(
|
||
|
"You are about to permanently delete " + artistID + ". " +
|
||
|
"This action is irreversible. " +
|
||
|
"Please enter \"" + artistID + "\" to continue.")) return;
|
||
|
fetch("/api/v1/artist/" + artistID, {
|
||
|
method: "DELETE",
|
||
|
}).then(res => {
|
||
|
if (!res.ok) {
|
||
|
res.text().then(error => {
|
||
|
console.error(error);
|
||
|
alert("Failed to delete release: " + error);
|
||
|
});
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
location = "/admin";
|
||
|
});
|
||
|
});
|
||
|
|
||
|
[nameInput, websiteInput].forEach(input => {
|
||
|
input.addEventListener("change", () => {
|
||
|
saveBtn.disabled = false;
|
||
|
});
|
||
|
input.addEventListener("keypress", () => {
|
||
|
saveBtn.disabled = false;
|
||
|
});
|
||
|
});
|
||
|
|
||
|
avatarImg.addEventListener("click", () => {
|
||
|
avatarInput.addEventListener("change", () => {
|
||
|
if (avatarInput.files.length > 0) {
|
||
|
const reader = new FileReader();
|
||
|
reader.onload = e => {
|
||
|
const data = e.target.result;
|
||
|
avatarImg.src = data;
|
||
|
saveBtn.disabled = false;
|
||
|
};
|
||
|
reader.readAsDataURL(avatarInput.files[0]);
|
||
|
}
|
||
|
});
|
||
|
avatarInput.click();
|
||
|
});
|
||
|
|
||
|
removeAvatarBtn.addEventListener("click", () => {
|
||
|
avatarImg.src = "/img/default-avatar.png"
|
||
|
saveBtn.disabled = false;
|
||
|
});
|