All files / src/utils localStorage.ts

42.85% Statements 9/21
100% Branches 2/2
50% Functions 1/2
42.85% Lines 9/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34      1x         1x 3x 3x 3x 1x 1x 3x         1x                            
/**
 * localStorage key used by astro-themes for theme preference (must be preserved on logout).
 */
export const THEME_STORAGE_KEY = 'theme';
 
/**
 * Clear the entire localStorage
 */
export const clearLocalStorage = () => {
  try {
    localStorage.clear();
  } catch (error) {
    console.error('Failed to clear localStorage:', error);
  }
};
 
/**
 * Clear localStorage but preserve given keys (e.g. theme preference so dark mode is retained after logout).
 */
export const clearLocalStorageExcept = (keysToPreserve: string[]) => {
  try {
    const preserve = new Set(keysToPreserve);
 
    for (let i = localStorage.length - 1; i >= 0; i--) {
      const key = localStorage.key(i);
      if (key && !preserve.has(key)) {
        localStorage.removeItem(key);
      }
    }
  } catch (error) {
    console.error('Failed to clear localStorage:', error);
  }
};