Stabilize longPreferences

This commit is contained in:
Pieter Vander Vennet 2022-04-13 02:42:33 +02:00
parent 94dcf57d41
commit 254098a7e5

View file

@ -76,9 +76,9 @@ export class OsmPreferences {
function updateData(l: number) {
if (l === undefined) {
source.setData(undefined);
return;
if(Object.keys(self.preferences.data).length === 0){
// The preferences are still empty - they are not yet updated, so we delay updating for now
return
}
const prefsCount = Number(l);
if (prefsCount > 100) {
@ -86,7 +86,11 @@ export class OsmPreferences {
}
let str = "";
for (let i = 0; i < prefsCount; i++) {
str += self.GetPreference(allStartWith + "-" + i, "").data;
const key = allStartWith + "-" + i
if(self.preferences.data[key] === undefined){
console.warn("Detected a broken combined preference:", key, "is undefined", self.preferences)
}
str += self.preferences.data[key] ?? "";
}
source.setData(str);
@ -95,7 +99,9 @@ export class OsmPreferences {
length.addCallback(l => {
updateData(Number(l));
});
updateData(Number(length.data));
this.preferences.addCallbackAndRun(_ => {
updateData(Number(length.data));
})
return source;
}
@ -127,7 +133,8 @@ export class OsmPreferences {
public ClearPreferences() {
let isRunning = false;
const self = this;
this.preferences.addCallbackAndRun(prefs => {
this.preferences.addCallback(prefs => {
console.log("Cleaning preferences...")
if (Object.keys(prefs).length == 0) {
return;
}
@ -135,19 +142,17 @@ export class OsmPreferences {
return
}
isRunning = true
const prefixes = ["mapcomplete-installed-theme", "mapcomplete-installed-themes-", "mapcomplete-current-open-changeset", "mapcomplete-personal-theme-layer"]
const prefixes = ["mapcomplete-"]
for (const key in prefs) {
for (const prefix of prefixes) {
if (key.startsWith(prefix)) {
console.log("Clearing ", key)
self.GetPreference(key, "").setData("")
const matches = prefixes.some(prefix => key.startsWith(prefix))
if (matches) {
console.log("Clearing ", key)
self.GetPreference(key, "").setData("")
}
}
}
isRunning = false;
return true;
return;
})
}