mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-19 18:00:15 +01:00
💾 chore: Enhance Local Storage Handling and Update MCP SDK (#6809)
* feat: Update MCP package version and dependencies; refactor ToolContentPart type * refactor: Change module type to commonjs and update rollup configuration, remove unused dev dependency * refactor: Change async calls to synchronous for MCP and FlowStateManager retrieval * chore: Add eslint disable comment for i18next rule in DropdownPopup component * fix: improve statefulness of mcp servers selected if some were removed since last session * feat: implement conversation storage cleanup functions and integrate them into mutation success handlers * feat: enhance storage condition logic in useLocalStorageAlt to prevent unnecessary local storage writes * refactor: streamline local storage update logic in useLocalStorageAlt
This commit is contained in:
parent
24c0433dcf
commit
e16a6190a5
18 changed files with 420 additions and 382 deletions
|
|
@ -11,13 +11,16 @@ export default function useLocalStorage<T>(
|
|||
key: string,
|
||||
defaultValue: T,
|
||||
globalSetState?: (value: T) => void,
|
||||
storageCondition?: (value: T, rawCurrentValue?: string | null) => boolean,
|
||||
): [T, (value: T) => void] {
|
||||
const [value, setValue] = useState(defaultValue);
|
||||
|
||||
useEffect(() => {
|
||||
const item = localStorage.getItem(key);
|
||||
|
||||
if (!item) {
|
||||
if (!item && !storageCondition) {
|
||||
localStorage.setItem(key, JSON.stringify(defaultValue));
|
||||
} else if (!item && storageCondition && storageCondition(defaultValue)) {
|
||||
localStorage.setItem(key, JSON.stringify(defaultValue));
|
||||
}
|
||||
|
||||
|
|
@ -47,9 +50,14 @@ export default function useLocalStorage<T>(
|
|||
const setValueWrap = (value: T) => {
|
||||
try {
|
||||
setValue(value);
|
||||
localStorage.setItem(key, JSON.stringify(value));
|
||||
if (typeof window !== 'undefined') {
|
||||
window.dispatchEvent(new StorageEvent('storage', { key }));
|
||||
const storeLocal = () => {
|
||||
localStorage.setItem(key, JSON.stringify(value));
|
||||
window?.dispatchEvent(new StorageEvent('storage', { key }));
|
||||
};
|
||||
if (!storageCondition) {
|
||||
storeLocal();
|
||||
} else if (storageCondition(value, localStorage.getItem(key))) {
|
||||
storeLocal();
|
||||
}
|
||||
globalSetState?.(value);
|
||||
} catch (e) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue