const releaseID = document.getElementById("release").dataset.id;
const titleInput = document.getElementById("title");
const artworkImg = document.getElementById("artwork");
const removeArtworkBtn = document.getElementById("remove-artwork");
const artworkInput = document.getElementById("artwork-file");
const typeInput = document.getElementById("type");
const descInput = document.getElementById("description");
const dateInput = document.getElementById("release-date");
const buynameInput = document.getElementById("buyname");
const buylinkInput = document.getElementById("buylink");
const copyrightInput = document.getElementById("copyright");
const copyrightURLInput = document.getElementById("copyright-url");
const visInput = document.getElementById("visibility");
const saveBtn = document.getElementById("save");
const deleteBtn = document.getElementById("delete");

var artworkData = artworkImg.attributes.src.value;

saveBtn.addEventListener("click", () => {
    fetch("/api/v1/music/" + releaseID, {
        method: "PUT",
        body: JSON.stringify({
            visible: visInput.value === "true",
            title: titleInput.value,
            description: descInput.value,
            type: typeInput.value,
            releaseDate: dateInput.value + ":00Z",
            artwork: artworkData,
            buyname: buynameInput.value,
            buylink: buylinkInput.value,
            copyright: copyrightInput.value,
            copyrightURL: copyrightURLInput.value,
        }),
        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 (releaseID != prompt(
        "You are about to permanently delete " + releaseID + ". " +
        "This action is irreversible. " +
        "Please enter \"" + releaseID + "\" to continue.")) return;
    fetch("/api/v1/music/" + releaseID, {
        method: "DELETE",
    }).then(res => {
        if (!res.ok) {
            res.text().then(error => {
                console.error(error);
                alert("Failed to delete release: " + error);
            });
            return;
        }

        location = "/admin";
    });
});

[titleInput, typeInput, descInput, dateInput, buynameInput, buylinkInput, copyrightInput, copyrightURLInput, visInput].forEach(input => {
    input.addEventListener("change", () => {
        saveBtn.disabled = false;
    });
    input.addEventListener("keypress", () => {
        saveBtn.disabled = false;
    });
});

artworkImg.addEventListener("click", () => {
    artworkInput.addEventListener("change", () => {
        if (artworkInput.files.length > 0) {
            const reader = new FileReader();
            reader.onload = e => {
                const data = e.target.result;
                artworkImg.src = data;
                artworkData = data;
                saveBtn.disabled = false;
            };
            reader.readAsDataURL(artworkInput.files[0]);
        }
    });
    artworkInput.click();
});


removeArtworkBtn.addEventListener("click", () => {
    artworkImg.src = "/img/default-cover-art.png"
    artworkData = "";
    saveBtn.disabled = false;
});
