Add dynamic loading of userLayout from localStorage
This commit is contained in:
parent
b4f95e5408
commit
58d6903ec5
3 changed files with 16 additions and 8 deletions
|
@ -3,10 +3,7 @@ import {UIEventSource} from "../UIEventSource";
|
|||
export class LocalStorageSource {
|
||||
|
||||
static Get(key: string, defaultValue: string = undefined): UIEventSource<string> {
|
||||
|
||||
try {
|
||||
|
||||
|
||||
const saved = localStorage.getItem(key);
|
||||
const source = new UIEventSource<string>(saved ?? defaultValue);
|
||||
|
||||
|
|
|
@ -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()};
|
||||
|
|
19
index.ts
19
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:<br/> "+e).AttachTo("centermessage");
|
||||
throw e;
|
||||
|
|
Loading…
Reference in a new issue