diff --git a/Logic/Web/LocalStorageSource.ts b/Logic/Web/LocalStorageSource.ts index ee604c8..210a43d 100644 --- a/Logic/Web/LocalStorageSource.ts +++ b/Logic/Web/LocalStorageSource.ts @@ -3,10 +3,7 @@ import {UIEventSource} from "../UIEventSource"; export class LocalStorageSource { static Get(key: string, defaultValue: string = undefined): UIEventSource { - try { - - const saved = localStorage.getItem(key); const source = new UIEventSource(saved ?? defaultValue); diff --git a/UI/CustomThemeGenerator/ThemeGenerator.ts b/UI/CustomThemeGenerator/ThemeGenerator.ts index 029bce7..dfcebe6 100644 --- a/UI/CustomThemeGenerator/ThemeGenerator.ts +++ b/UI/CustomThemeGenerator/ThemeGenerator.ts @@ -535,7 +535,7 @@ export class ThemeGenerator extends UIElement { if (window.location.hostname === "127.0.0.1") { baseUrl = "http://127.0.0.1:1234"; } - this.url = base64.map((data) => baseUrl + `/index.html?test=true&userlayout=true#` + data); + this.url = base64.map((data) => `${baseUrl}/index.html?test=true&userlayout=${this.themeObject.data.name}#${data}`); const self = this; pingThemeObject = () => {self.themeObject.ping()}; diff --git a/index.ts b/index.ts index c332cca..37747ec 100644 --- a/index.ts +++ b/index.ts @@ -69,17 +69,28 @@ defaultLayout = QueryParameters.GetQueryParameter("layout", defaultLayout).data; let layoutToUse: Layout = AllKnownLayouts.allSets[defaultLayout] ?? AllKnownLayouts["all"]; -const layoutFromBase64 = QueryParameters.GetQueryParameter("userlayout", "false").data; +const userLayoutParam = QueryParameters.GetQueryParameter("userlayout", "false"); +const layoutFromBase64 = userLayoutParam.data; if (layoutFromBase64 !== "false") { try { + // layoutFromBase64 contains the name of the theme. This is partly to do tracking with goat counter + + const dedicatedHashFromLocalStorage = LocalStorageSource.Get("user-layout-" + layoutFromBase64.replace(" ", "_")); + + if(dedicatedHashFromLocalStorage.data?.length < 10){ + dedicatedHashFromLocalStorage.setData(undefined); + } + const hashFromLocalStorage = LocalStorageSource.Get("last-loaded-user-layout"); - if(hash.length < 10){ - hash = hashFromLocalStorage.data; - }else{ + if (hash.length < 10) { + hash = dedicatedHashFromLocalStorage.data ?? hashFromLocalStorage.data; + } else { console.log("Saving hash to local storage") hashFromLocalStorage.setData(hash); + dedicatedHashFromLocalStorage.setData(hash); } layoutToUse = CustomLayoutFromJSON.FromQueryParam(hash.substr(1)); + userLayoutParam.setData(layoutToUse.name); } catch (e) { new FixedUiElement("Error: could not parse the custom layout:
"+e).AttachTo("centermessage"); throw e;