diff --git a/src/lib/converters/vertd.svelte.ts b/src/lib/converters/vertd.svelte.ts index 0c41efe..839e513 100644 --- a/src/lib/converters/vertd.svelte.ts +++ b/src/lib/converters/vertd.svelte.ts @@ -290,7 +290,15 @@ export class VertdConverter extends Converter { } private blocked(hash: string): boolean { - const blockedHashes = Settings.instance.settings.vertdBlockedHashes; + let blockedHashes = Settings.instance.settings.vertdBlockedHashes; + + // ensure it's a map + // this might fix the "e.get" isn't a function error, but i can't reproduce it + if (!(blockedHashes instanceof Map) || blockedHashes === null) { + blockedHashes = new Map(Object.entries(blockedHashes || {})); + Settings.instance.settings.vertdBlockedHashes = blockedHashes; + Settings.instance.save(); + } const now = new Date(); const dates = blockedHashes.get(hash) || []; @@ -311,7 +319,15 @@ export class VertdConverter extends Converter { } private failure(hash: string): void { - const blockedHashes = Settings.instance.settings.vertdBlockedHashes; + let blockedHashes = Settings.instance.settings.vertdBlockedHashes; + + // same as above (blocked()) + if (!(blockedHashes instanceof Map) || blockedHashes === null) { + blockedHashes = new Map(Object.entries(blockedHashes || {})); + Settings.instance.settings.vertdBlockedHashes = blockedHashes; + Settings.instance.save(); + } + const now = new Date(); const dates = blockedHashes.get(hash) || []; dates.push(now); diff --git a/src/lib/sections/settings/index.svelte.ts b/src/lib/sections/settings/index.svelte.ts index 91e41b1..549501d 100644 --- a/src/lib/sections/settings/index.svelte.ts +++ b/src/lib/sections/settings/index.svelte.ts @@ -60,21 +60,26 @@ export class Settings { } public load() { - VertdInstance.instance.load(); - const ls = localStorage.getItem("settings"); - if (!ls) return; - const settings: ISettings = JSON.parse(ls); - const vertdBlockedHashes = new Map( - Object.entries( - settings.vertdBlockedHashes || this.settings.vertdBlockedHashes, - ), - ); + try { + VertdInstance.instance.load(); + const ls = localStorage.getItem("settings"); + if (!ls) return; + const settings: ISettings = JSON.parse(ls); + const vertdBlockedHashes = new Map( + Object.entries( + settings.vertdBlockedHashes || + this.settings.vertdBlockedHashes, + ), + ); - settings.vertdBlockedHashes = vertdBlockedHashes; + settings.vertdBlockedHashes = vertdBlockedHashes; - this.settings = { - ...this.settings, - ...settings, - }; + this.settings = { + ...this.settings, + ...settings, + }; + } catch { + // ignore errors, use default settings + } } }