Ver código fonte

web: cache repeater title across app and stats pages

Jared Dohrman 3 meses atrás
pai
commit
663f493817
1 arquivos alterados com 15 adições e 1 exclusões
  1. 15 1
      src/helpers/web/WebPanelServer.cpp

+ 15 - 1
src/helpers/web/WebPanelServer.cpp

@@ -994,6 +994,7 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(
     const RADIO_PRESETS_URL = "https://api.meshcore.nz/api/v1/config";
     const isStatsPage = window.location.pathname === "/stats";
     const LAST_PAGE_KEY = "repeater-last-page";
+    const PANEL_TITLE_KEY = "repeater-panel-title";
     let token = sessionStorage.getItem("repeater-token") || "";
     let commandQueue = Promise.resolve();
     let radioPresetEntries = [];
@@ -1005,7 +1006,19 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(
     function updatePanelTitle(nameValue) {
       const fallbackTitle = "Repeater Config";
       const trimmedName = String(nameValue == null ? "" : nameValue).trim();
-      document.title = trimmedName ? trimmedName : fallbackTitle;
+      const nextTitle = trimmedName ? trimmedName : fallbackTitle;
+      document.title = nextTitle;
+      if (trimmedName) {
+        localStorage.setItem(PANEL_TITLE_KEY, trimmedName);
+      } else {
+        localStorage.removeItem(PANEL_TITLE_KEY);
+      }
+    }
+    function applyCachedPanelTitle() {
+      const cachedTitle = localStorage.getItem(PANEL_TITLE_KEY);
+      if (cachedTitle && cachedTitle.trim()) {
+        document.title = cachedTitle.trim();
+      }
     }
     function rememberCurrentPage() {
       localStorage.setItem(LAST_PAGE_KEY, isStatsPage ? "/stats" : "/app");
@@ -1017,6 +1030,7 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(
       window.location.replace("/");
     }
     rememberCurrentPage();
+    applyCachedPanelTitle();
     function getPreferredTheme() {
       const saved = localStorage.getItem("repeater-theme");
       if (saved === "light" || saved === "dark") return saved;