Grimvault / static /js /admindash.js
Sergidev's picture
v1
a6db6a6 verified
document.addEventListener("DOMContentLoaded", () => {
const userAccounts = document.getElementById("user-accounts");
userAccounts.addEventListener("click", async (e) => {
const username = e.target.dataset.username;
if (e.target.classList.contains("update-storage")) {
const newLimit = prompt("Enter new storage limit in GB:");
if (newLimit) {
try {
const response = await axios.post("/admin/update_storage", {
username: username,
new_limit: newLimit,
});
alert(response.data.message);
location.reload();
} catch (error) {
alert(
"Failed to update storage: " +
(error.response?.data?.error || error.message),
);
}
}
} else if (e.target.classList.contains("toggle-ban")) {
const currentStatus = e.target.dataset.banned === "true";
const newStatus = !currentStatus;
try {
const response = await axios.post("/admin/ban_user", {
username: username,
ban_status: newStatus,
});
alert(response.data.message);
location.reload();
} catch (error) {
alert(
"Failed to update ban status: " +
(error.response?.data?.error || error.message),
);
}
} else if (e.target.classList.contains("delete-account")) {
if (
confirm(`Are you sure you want to delete the account for ${username}?`)
) {
try {
const response = await axios.delete(`/admin/delete/${username}`);
alert(response.data.message);
location.reload();
} catch (error) {
alert(
"Failed to delete account: " +
(error.response?.data?.error || error.message),
);
}
}
}
});
});