Grimvault / static /js /dashboard.js
Sergidev's picture
v1
a6db6a6 verified
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),
);
}
}
}
});
});