|
document.addEventListener("DOMContentLoaded", () => { |
|
const uploadForm = document.getElementById("upload-form"); |
|
const emptyVaultBtn = document.getElementById("empty-vault"); |
|
const fileList = document.getElementById("file-list"); |
|
|
|
uploadForm.addEventListener("submit", async (e) => { |
|
e.preventDefault(); |
|
const formData = new FormData(e.target); |
|
try { |
|
const response = await axios.post("/upload", formData, { |
|
headers: { "Content-Type": "multipart/form-data" }, |
|
}); |
|
alert(response.data.message); |
|
location.reload(); |
|
} catch (error) { |
|
alert("Upload failed: " + (error.response?.data?.error || error.message)); |
|
} |
|
}); |
|
|
|
emptyVaultBtn.addEventListener("click", async () => { |
|
const confirmed = confirm( |
|
"Are you sure you want to empty your vault? This action cannot be undone.", |
|
); |
|
if (confirmed) { |
|
const password = prompt( |
|
"Enter your password to confirm emptying your vault:", |
|
); |
|
if (password) { |
|
try { |
|
const response = await axios.post("/empty", { password }); |
|
alert(response.data.message); |
|
location.reload(); |
|
} catch (error) { |
|
alert( |
|
"Failed to empty vault: " + |
|
(error.response?.data?.error || error.message), |
|
); |
|
} |
|
} |
|
} |
|
}); |
|
|
|
fileList.addEventListener("click", async (e) => { |
|
if (e.target.classList.contains("download-btn")) { |
|
const filename = e.target.dataset.filename; |
|
window.location.href = `/download/${filename}`; |
|
} else if (e.target.classList.contains("delete-btn")) { |
|
const filename = e.target.dataset.filename; |
|
if (confirm(`Are you sure you want to delete ${filename}?`)) { |
|
try { |
|
const response = await axios.delete(`/delete/${filename}`); |
|
alert(response.data.message); |
|
e.target.closest("li").remove(); |
|
} catch (error) { |
|
alert( |
|
"Failed to delete file: " + |
|
(error.response?.data?.error || error.message), |
|
); |
|
} |
|
} |
|
} |
|
}); |
|
}); |
|
|