platform-codebase/@packages/@ui/developer-fab/src/hooks/useStorageManager.ts
2026-01-14 10:48:32 -08:00

52 lines
1.4 KiB
TypeScript

/**
* useStorageManager - Hook for storage management utilities
*
* Provides utilities for viewing and manipulating localStorage/sessionStorage.
*/
import { useState, useCallback, useEffect } from 'react';
import {
getLocalStorageEntries,
getSessionStorageEntries,
clearStorage as clearStorageUtil,
} from '../utils/storage';
import type { StorageEntry } from '../types';
export interface UseStorageManagerReturn {
localStorageEntries: StorageEntry[];
sessionStorageEntries: StorageEntry[];
clearStorage: (type: 'localStorage' | 'sessionStorage', key?: string) => void;
refreshEntries: () => void;
}
export function useStorageManager(): UseStorageManagerReturn {
const [localStorageEntries, setLocalStorageEntries] = useState<StorageEntry[]>([]);
const [sessionStorageEntries, setSessionStorageEntries] = useState<StorageEntry[]>([]);
const refreshEntries = useCallback(() => {
setLocalStorageEntries(getLocalStorageEntries());
setSessionStorageEntries(getSessionStorageEntries());
}, []);
// Load entries on mount
useEffect(() => {
refreshEntries();
}, [refreshEntries]);
const clearStorage = useCallback(
(type: 'localStorage' | 'sessionStorage', key?: string) => {
clearStorageUtil(type, key);
refreshEntries();
},
[refreshEntries]
);
return {
localStorageEntries,
sessionStorageEntries,
clearStorage,
refreshEntries,
};
}