From 3ff7d430861dce647b5a7d0238c173b3e94f0273 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Sat, 22 Mar 2025 23:37:59 +0100 Subject: [PATCH] fix default filters not parsing correctly --- src/components/FiltersMenu.vue | 3 +-- src/util/Filters.ts | 35 ++++++++++++++++++++++++---------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/components/FiltersMenu.vue b/src/components/FiltersMenu.vue index 78e1480..8998f18 100644 --- a/src/components/FiltersMenu.vue +++ b/src/components/FiltersMenu.vue @@ -135,8 +135,7 @@ export default defineComponent({ watch: { filters: { handler(newFilters) { - const filters = new Filters(newFilters); - window.localStorage.setItem("filters", filters.serialize()); + window.localStorage.setItem("filters", newFilters.serialize()); }, deep: true, }, diff --git a/src/util/Filters.ts b/src/util/Filters.ts index fc8ea7d..f82bbb8 100644 --- a/src/util/Filters.ts +++ b/src/util/Filters.ts @@ -18,7 +18,13 @@ export default class Filters { ) { this.minLevel = data?.minLevel || 91; this.maxLevel = data?.maxLevel || 100; - const jobData = data?.jobs || [Job.BOTANIST, Job.MINER]; + let jobData = [ + Job.BOTANIST.toLowerCase(), + Job.MINER.toLowerCase() + ]; + if (data?.jobs && Array.isArray(data?.jobs) && data?.jobs?.length > 0) { + jobData = data.jobs; + } for (const job of jobData) { const parsedJob = jobFromString(job); @@ -26,24 +32,33 @@ export default class Filters { this.jobs.add(parsedJob); } - const nodeTypeData = data?.nodeTypes || [ - NodeType.UNSPOILED, + let nodeTypeData = [ + NodeType.UNSPOILED.toLowerCase(), ]; - - for (const nodeType of nodeTypeData) { - const parsedNodeType = nodeTypeFromString(nodeType); - if (!parsedNodeType) continue; - this.nodeTypes.add(parsedNodeType); + if (data?.nodeTypes && Array.isArray(data?.nodeTypes) && data?.nodeTypes?.length > 0) { + nodeTypeData = data.nodeTypes; } + if (Array.isArray(nodeTypeData)) { + for (const nodeType of nodeTypeData) { + const parsedNodeType = nodeTypeFromString(nodeType); + if (!parsedNodeType) continue; + this.nodeTypes.add(parsedNodeType); + } + } + + } serialize(): string { + const serializedJobs = Array.from(this.jobs); + const serializedNodeTypes = Array.from(this.nodeTypes); + return JSON.stringify({ minLevel: this.minLevel, maxLevel: this.maxLevel, - jobs: Array.from(this.jobs).map(job => job), - nodeTypes: Array.from(this.nodeTypes).map(nodeType => nodeType), + jobs: serializedJobs, + nodeTypes: serializedNodeTypes, }); }