diff --git a/apps/home/static/home/js/servers.js b/apps/home/static/home/js/servers.js index 419b908..41acced 100644 --- a/apps/home/static/home/js/servers.js +++ b/apps/home/static/home/js/servers.js @@ -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 ${server.name} 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",