const weltWrapper = document.getElementById("weltWrapper");
updateButtonState();

// Welt-Daten vom Server holen
async function loadWelten() {
    const res = await fetch("/getWorlds");
    const welten = await res.json();

    weltWrapper.innerHTML = ""; // vorher leeren

    if (welten.length === 0) {
        // Keine Welt vorhanden → Upload-Button für "world"
        const div = document.createElement("div");
        div.className = "welt";

        div.innerHTML = `
            <h3>Keine Welt gefunden</h3>
            <button class="upload" onclick="uploadWeltPrompt('world')">
                Welt "world" hochladen
            </button>
        `;

        weltWrapper.appendChild(div);
        return; // keine weiteren Welten anzeigen
    }

    welten.forEach(welt => {
        const div = document.createElement("div");
        div.className = "welt";

        div.innerHTML = `
            <h3>${welt.name}</h3>
            <p>Größe: ${welt.size}</p>
            <p>Letzte Änderung: ${welt.modified}</p>
            <div class="welt-buttons">
                <button class="download" onclick="downloadWelt('${welt.name}')">Herunterladen</button>
                <button class="upload" onclick="uploadWeltPrompt('${welt.name}')">Hochladen</button>
                <button class="delete" onclick="deleteWelt('${welt.name}')">Löschen</button>
                <button class="backup" onclick="backupWelt('${welt.name}')">Backup</button>
            </div>
        `;

        weltWrapper.appendChild(div);
    });

    updateButtonState();
}

// Status über onlinesymbol.js
function updateButtonState() {
    const onlineSymbol = document.querySelector(".onlineSymbol");
    if (!onlineSymbol) return;

    // sofort Status auslesen
    const serverOnline = onlineSymbol.textContent === "Online";

    // Hochladen / Löschen Buttons anpassen
    document.querySelectorAll(".welt button.upload, .welt button.delete").forEach(btn => {
        btn.disabled = serverOnline;
        btn.style.opacity = serverOnline ? "0.5" : "1";
        btn.style.cursor = serverOnline ? "not-allowed" : "pointer";
    });
}

// Herunterladen
async function downloadWelt(name) {
    window.location.href = `/downloadWorld/${name}`;
}

// Hochladen
function uploadWeltPrompt(targetFolder) {
    const input = document.createElement("input");
    input.type = "file";
    input.accept = ".zip";
    input.onchange = async () => {
        const file = input.files[0];
        if (!file) return;

        const formData = new FormData();
        formData.append("weltZip", file);
        formData.append("targetFolder", targetFolder); // hier wird der Zielordner übermittelt

        const res = await fetch("/uploadWorld", {
            method: "POST",
            body: formData
        });

        alert(await res.text());
        loadWelten(); // Liste aktualisieren
    };
    input.click();
}

// Löschen
async function deleteWelt(name) {
    if (!confirm(`Wirklich die Welt "${name}" löschen?`)) return;
    const res = await fetch("/deleteWorld", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ name })
    });
    alert(await res.text());
    loadWelten();
}

// Backup
async function backupWelt(name) {
    const res = await fetch("/backupWorld", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ name })
    });
    alert(await res.text());
}

// Alle 3 Sekunden Buttons aktualisieren, falls Serverstatus sich ändert
setInterval(updateButtonState, 3000);

loadWelten();