diff --git a/src/features/authFiles/uiState.ts b/src/features/authFiles/uiState.ts index 5631fae..403b00d 100644 --- a/src/features/authFiles/uiState.ts +++ b/src/features/authFiles/uiState.ts @@ -21,13 +21,23 @@ const AUTH_FILES_SORT_MODE_SET = new Set(AUTH_FILES_SORT_MODE export const isAuthFilesSortMode = (value: unknown): value is AuthFilesSortMode => typeof value === 'string' && AUTH_FILES_SORT_MODE_SET.has(value as AuthFilesSortMode); +const readAuthFilesUiStateFromStorage = ( + storage: Pick | null | undefined +): AuthFilesUiState | null => { + if (!storage) return null; + const raw = storage.getItem(AUTH_FILES_UI_STATE_KEY); + if (!raw) return null; + const parsed = JSON.parse(raw) as AuthFilesUiState; + return parsed && typeof parsed === 'object' ? parsed : null; +}; + export const readAuthFilesUiState = (): AuthFilesUiState | null => { if (typeof window === 'undefined') return null; try { - const raw = window.sessionStorage.getItem(AUTH_FILES_UI_STATE_KEY); - if (!raw) return null; - const parsed = JSON.parse(raw) as AuthFilesUiState; - return parsed && typeof parsed === 'object' ? parsed : null; + return ( + readAuthFilesUiStateFromStorage(window.localStorage) ?? + readAuthFilesUiStateFromStorage(window.sessionStorage) + ); } catch { return null; } @@ -36,7 +46,12 @@ export const readAuthFilesUiState = (): AuthFilesUiState | null => { export const writeAuthFilesUiState = (state: AuthFilesUiState) => { if (typeof window === 'undefined') return; try { - window.sessionStorage.setItem(AUTH_FILES_UI_STATE_KEY, JSON.stringify(state)); + window.localStorage.setItem(AUTH_FILES_UI_STATE_KEY, JSON.stringify(state)); + } catch { + // ignore + } + try { + window.sessionStorage.removeItem(AUTH_FILES_UI_STATE_KEY); } catch { // ignore }