diff --git a/assets/launch.js b/assets/launch.js index f27a78f..3c7cec4 100644 --- a/assets/launch.js +++ b/assets/launch.js @@ -12,6 +12,20 @@ let CONFIG = {}; const CONFIG_URL = "assets/config.json"; +/* + * localStorage is scoped per origin, not per path. + * Prefix keys with the app directory so parallel + * instances (e.g. meet.bnvb.eu/i and /p) stay + * independent. + * + * "/p/launch.html" becomes "/p/" + */ +const STORAGE_PREFIX = + window.location.pathname.replace(/[^/]*$/, ""); + +const LANGUAGE_KEY = STORAGE_PREFIX + "jitsiLauncherLanguage"; +const THEME_KEY = STORAGE_PREFIX + "jitsiLauncherTheme"; + /* ============================================================ * Translations * ============================================================ @@ -34,7 +48,7 @@ function detectLanguage() { * Saved language choice takes precedence. */ try { - const saved = localStorage.getItem("jitsiLauncherLanguage"); + const saved = localStorage.getItem(LANGUAGE_KEY); if (saved && TRANSLATIONS[saved]) { return saved; @@ -179,7 +193,7 @@ function setLanguage(language) { translation = TRANSLATIONS[language]; try { - localStorage.setItem("jitsiLauncherLanguage", language); + localStorage.setItem(LANGUAGE_KEY, language); } catch (error) { /* * localStorage can be blocked, e.g. in private mode. @@ -225,8 +239,6 @@ function closeNavMenu() { * ============================================================ */ -const THEME_KEY = "jitsiLauncherTheme"; - function savedTheme() { try { const saved = localStorage.getItem(THEME_KEY);