From 36f1b5b7d92508a11649e7b5fd09a9f9c8241b18 Mon Sep 17 00:00:00 2001 From: Maurice Date: Sun, 18 Oct 2026 14:07:25 +0200 Subject: [PATCH] refactor(journey): read the stored dismissed suggestions as the list they are written as The reader also took {id, dismissedAt} records, a shape nothing writes. --- client/src/pages/journey/useJourney.ts | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/client/src/pages/journey/useJourney.ts b/client/src/pages/journey/useJourney.ts index fe90d61f5..c24f5086d 100644 --- a/client/src/pages/journey/useJourney.ts +++ b/client/src/pages/journey/useJourney.ts @@ -11,24 +11,11 @@ function dismissedSuggestionsKey(userId: number | undefined): string { return `trek:journey:dismissed-suggestions:v1:${userId ?? 'anonymous'}` } +/** The trips this user put away, as stored here; anything unreadable reads as none. */ function readDismissedSuggestions(userId: number | undefined): Set { try { const value: unknown = JSON.parse(window.localStorage.getItem(dismissedSuggestionsKey(userId)) || '[]') - if (!Array.isArray(value)) return new Set() - - const dismissed = new Set() - for (const item of value) { - if (Number.isInteger(item)) { - dismissed.add(item) - continue - } - if (!item || typeof item !== 'object') { - continue - } - const record = item as { id?: unknown; dismissedAt?: unknown } - if (typeof record.id === 'number' && Number.isInteger(record.id)) dismissed.add(record.id) - } - return dismissed + return new Set(Array.isArray(value) ? value.filter((id): id is number => Number.isInteger(id)) : []) } catch { return new Set() }