handle server data deletion
Some checks are pending
Build and Push Docker Image / build (push) Waiting to run

This commit is contained in:
Corban-Lee Jones 2024-10-24 18:20:23 +01:00
parent 841e24f508
commit 1d426dff26

View File

@ -22,7 +22,7 @@ function getLoadedServer(options) {
function getServerFromSnowflake(id) {
server = getLoadedServer({id: id});
if (!server.length) {
throw new Error("No Server with that ID");
return null;
}
return server[0];
@ -207,7 +207,7 @@ function selectServer(id) {
if (!server) {
$("#noSelectedServer").show();
$("#selectedServerContainer").hide();
selectServer = null;
selectedServer = null;
return;
}
@ -265,7 +265,7 @@ $(document).on("selectedServerChange", async function() {
// region Load Servers
async function loadServers() {
async function loadServers(generate=true) {
// Remove any previously loaded servers
$(".sidebar .sidebar-item").closest("li").remove();
@ -275,8 +275,12 @@ async function loadServers() {
$(".sidebar .server-rate-limit").hide();
try {
const servers = await ajaxRequest("/generate-servers/", "GET");
servers.forEach(server => addToLoadedServers(server, false));
let data = await ajaxRequest(
generate ? "/generate-servers/" : "/api/servers/",
"GET"
);
data = generate ? data : data.results; // api responds differently
data.forEach(server => addToLoadedServers(server, false));
}
catch (error) {
switch (error?.status) {
@ -353,6 +357,34 @@ $(".js-serverHistoryBtn").on("click", () => {
// region Delete Server Data
const eraseServerData = async server => {
const response = await ajaxRequest(`/api/servers/${server.id}/`, "DELETE");
debugger
// Only server owners can delete all data at once
if (response?.status === 403) {
createModal({
title: `Failed to Delete Data for ${server.name}`,
texts: [{
content: `Only the owner of <b>${server.name}</b> can erase all of it's data.`,
html: true
}],
buttons: [{
className: "btn-danger px-4",
iconClass: "bi-arrow-return-right",
closeModal: true
}]
});
return;
}
// Return to the 'select a server' screen
selectServer(null);
// Refresh the sidebar server list
await loadServers(false);
}
$(".js-eraseServerBtn").on("click", () => {
const server = selectedServer; // Store incase it changes
const itemsToLose = arrayToHtmlList([
@ -362,10 +394,6 @@ $(".js-eraseServerBtn").on("click", () => {
"Tracked Content"
]).addClass("mb-3").prop("outerHTML");
const eraseServerData = () => {
alert("not implemented")
}
createModal({
title: `Delete Data for ${server.name}?`,
texts: [
@ -378,7 +406,7 @@ $(".js-eraseServerBtn").on("click", () => {
className: "btn-danger me-3",
iconClass: "bi-trash3",
closeModal: true,
onClick: eraseServerData
onClick: () => eraseServerData(server)
},
{
className: "btn-secondary px-4",