52 lines
1.4 KiB
TypeScript
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,
|
|
};
|
|
}
|