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