From c28de6db32425a864eeb7ff93e498b84eb0e5005 Mon Sep 17 00:00:00 2001 From: KingKDot Date: Wed, 6 May 2026 10:09:38 -0500 Subject: [PATCH] persistent notifications + save scripts not tied to local storage. --- Overlord-Server/public/assets/scripts.js | 97 +++++----- Overlord-Server/src/db.ts | 183 ++++++++++++++++++ Overlord-Server/src/main-server.ts | 11 +- Overlord-Server/src/server/http-dispatch.ts | 4 + .../src/server/notification-delivery.ts | 7 +- .../src/server/routes/saved-scripts-routes.ts | 81 ++++++++ .../src/server/ws-notifications-plugin.ts | 14 +- 7 files changed, 335 insertions(+), 62 deletions(-) create mode 100644 Overlord-Server/src/server/routes/saved-scripts-routes.ts diff --git a/Overlord-Server/public/assets/scripts.js b/Overlord-Server/public/assets/scripts.js index c8cbc21..644c03b 100644 --- a/Overlord-Server/public/assets/scripts.js +++ b/Overlord-Server/public/assets/scripts.js @@ -22,7 +22,6 @@ const autoTaskList = document.getElementById("auto-task-list"); let allClients = []; let filteredClients = []; const selectedClients = new Set(); -const SAVED_SCRIPTS_KEY = "overlord_saved_scripts"; let autoTasks = []; let autoTaskEditingId = null; let editorInstance = null; @@ -232,27 +231,23 @@ function escapeHtml(text) { return div.innerHTML; } -function getSavedScripts() { +let cachedSavedScripts = []; + +async function loadSavedScripts() { try { - const items = JSON.parse(localStorage.getItem(SAVED_SCRIPTS_KEY) || "[]"); - return Array.isArray(items) ? items : []; + const res = await fetch("/api/saved-scripts"); + if (!res.ok) throw new Error("Failed to load saved scripts"); + const data = await res.json(); + cachedSavedScripts = Array.isArray(data.items) ? data.items : []; } catch (err) { console.error("Failed to load saved scripts:", err); - return []; - } -} - -function setSavedScripts(scripts) { - try { - const trimmed = scripts.slice(0, 50); - localStorage.setItem(SAVED_SCRIPTS_KEY, JSON.stringify(trimmed)); - } catch (err) { - console.error("Failed to save scripts:", err); + cachedSavedScripts = []; } + return cachedSavedScripts; } function renderSavedScripts() { - const scripts = getSavedScripts().sort((a, b) => b.updatedAt - a.updatedAt); + const scripts = cachedSavedScripts.slice().sort((a, b) => b.updatedAt - a.updatedAt); if (scripts.length === 0) { savedScriptsList.innerHTML = '
No saved scripts yet.
'; @@ -264,7 +259,7 @@ function renderSavedScripts() {
${escapeHtml(s.name)}
-
${escapeHtml(s.type)} • ${new Date(s.updatedAt).toLocaleString()}
+
${escapeHtml(s.scriptType)} • ${new Date(s.updatedAt).toLocaleString()}