core/apps/webapp/app/hooks/use-local-state.tsx
Harshith Mullapudi 56adc246c8 Feat: UI changes
2025-06-10 12:26:04 +05:30

27 lines
834 B
TypeScript

import { useState, useEffect } from "react";
export const useLocalCommonState = <T,>(key: string, initialValue?: T) => {
const path = "userSettings";
const [state, setState] = useState<T>(() => {
// Try to load from localStorage on initial render
const savedObject = localStorage?.getItem(path);
const parsedObject = savedObject ? JSON.parse(savedObject) : {};
return key in parsedObject ? parsedObject[key] : initialValue;
});
// Save to localStorage whenever state changes
useEffect(() => {
const savedObject = localStorage.getItem(path);
const parsedObject = savedObject ? JSON.parse(savedObject) : {};
localStorage.setItem(
path,
JSON.stringify({
...parsedObject,
[key]: state,
}),
);
}, [state, path, key]);
return [state, setState] as const;
};