Remove unmaintained preferences page, re-add earlier visited installed themes (only remove themes)

This commit is contained in:
Pieter Vander Vennet 2021-12-21 20:57:25 +01:00
parent 4b6769d601
commit 7fe79600fb
6 changed files with 78 additions and 282 deletions

View file

@ -3,12 +3,12 @@ import {OsmConnection} from "../Osm/OsmConnection";
import {MangroveIdentity} from "../Web/MangroveReviews";
import {UIEventSource} from "../UIEventSource";
import {QueryParameters} from "../Web/QueryParameters";
import InstalledThemes from "../Actors/InstalledThemes";
import {LocalStorageSource} from "../Web/LocalStorageSource";
import {Utils} from "../../Utils";
import Locale from "../../UI/i18n/Locale";
import ElementsState from "./ElementsState";
import SelectedElementTagsUpdater from "../Actors/SelectedElementTagsUpdater";
import {log} from "util";
/**
* The part of the state which keeps track of user-related stuff, e.g. the OSM-connection,
@ -33,7 +33,10 @@ export default class UserRelatedState extends ElementsState {
/**
* WHich other themes the user previously visited
*/
public installedThemes: UIEventSource<{ layout: LayoutConfig; definition: string }[]>;
public installedThemes: UIEventSource<{ id: string, // The id doubles as the URL
icon: string,
title: any,
shortDescription: any}[]>;
constructor(layoutToUse: LayoutConfig, options?:{attemptLogin : true | boolean}) {
@ -69,9 +72,47 @@ export default class UserRelatedState extends ElementsState {
})
}
this.installedThemes = new InstalledThemes(
this.osmConnection
).installedThemes;
this.installedThemes = this.osmConnection.GetLongPreference("installed-themes").map(
str => {
if(str === undefined || str === ""){
return []
}
try{
return JSON.parse(str)
}catch(e){
console.warn("Could not parse preference with installed themes due to ", e,"\nThe offending string is",str)
return []
}
}, [],(installed => JSON.stringify(installed))
)
const self = this;
this.osmConnection.isLoggedIn.addCallbackAndRunD(loggedIn => {
if(!loggedIn){
return
}
if(this.layoutToUse.id.startsWith("http")){
if(!this.installedThemes.data.some(installed => installed.id === this.layoutToUse.id)){
this.installedThemes.data.push({
id: this.layoutToUse.id,
icon: this.layoutToUse.icon,
title: this.layoutToUse.title.translations,
shortDescription: this.layoutToUse.shortDescription.translations
})
}
this.installedThemes.ping()
console.log("Registered "+this.layoutToUse.id+" as installed themes")
}
return true;
})
// Important: the favourite layers are initialized _after_ the installed themes, as these might contain an installedTheme
this.favouriteLayers = LocalStorageSource.Get("favouriteLayers")
@ -81,8 +122,7 @@ export default class UserRelatedState extends ElementsState {
[],
(layers) => Utils.Dedup(layers)?.join(";")
);
this.InitializeLanguage();
new SelectedElementTagsUpdater(this)