11// @ts -check
22
3- const STORAGE_KEY = 'pokemon-hide-list '
4- const SNACKBAR_COUNT_KEY = 'pokemon-hide -snackbar-count'
3+ const STORAGE_KEY = 'hidden-entities '
4+ const SNACKBAR_COUNT_KEY = 'hidden-entities -snackbar-count'
55const MAX_AGE_MS = 60 * 60 * 1000 // 1 hour
66const MAX_SNACKBAR_SHOWS = 3
77
@@ -10,7 +10,7 @@ const MAX_SNACKBAR_SHOWS = 3
1010 */
1111
1212/**
13- * Load hidden Pokemon entries from localStorage
13+ * Load hidden entries from localStorage
1414 * @returns {HiddenEntry[] }
1515 */
1616function loadEntries ( ) {
@@ -25,7 +25,7 @@ function loadEntries() {
2525}
2626
2727/**
28- * Save hidden Pokemon entries to localStorage
28+ * Save hidden entries to localStorage
2929 * @param {HiddenEntry[] } entries
3030 */
3131function saveEntries ( entries ) {
@@ -47,12 +47,12 @@ function cleanOldEntries(entries) {
4747}
4848
4949/**
50- * Add an entity ID to the hidden list with timestamp, cleaning old entries
50+ * Add an entity ID to the hidden list with timestamp
5151 * @param {string | number } id
5252 * @returns {Set<string | number> } Updated hideList Set
5353 */
5454export function addHiddenEntity ( id ) {
55- const entries = cleanOldEntries ( loadEntries ( ) )
55+ const entries = loadEntries ( )
5656 if ( ! entries . some ( ( e ) => e . id === id ) ) {
5757 entries . push ( { id, ts : Date . now ( ) } )
5858 }
@@ -61,15 +61,28 @@ export function addHiddenEntity(id) {
6161}
6262
6363/**
64- * Get the current hidden entity Set from localStorage (cleaned)
64+ * Get the current hidden entity Set from localStorage
6565 * @returns {Set<string | number> }
6666 */
6767export function getHiddenEntitySet ( ) {
68- const entries = cleanOldEntries ( loadEntries ( ) )
69- saveEntries ( entries ) // persist cleaned list
68+ const entries = loadEntries ( )
7069 return new Set ( entries . map ( ( e ) => e . id ) )
7170}
7271
72+ /**
73+ * Clean outdated hidden entries (older than 1 hour) from localStorage
74+ * Updates both localStorage and the in-memory hideList
75+ * @param {(state: { hideList: Set<string | number> }) => void } setState
76+ */
77+ export function cleanupHiddenEntities ( setState ) {
78+ const entries = loadEntries ( )
79+ const cleaned = cleanOldEntries ( entries )
80+ if ( cleaned . length !== entries . length ) {
81+ saveEntries ( cleaned )
82+ setState ( { hideList : new Set ( cleaned . map ( ( e ) => e . id ) ) } )
83+ }
84+ }
85+
7386/** @type {{ current: number | null } } */
7487const snackbarTimer = { current : null }
7588
0 commit comments