diff --git a/src/containers/ConfigsContext.tsx b/src/containers/ConfigsContext.tsx index 4710a83..5dc6793 100644 --- a/src/containers/ConfigsContext.tsx +++ b/src/containers/ConfigsContext.tsx @@ -13,15 +13,21 @@ export function ConfigsContextWrapper(props: React.PropsWithChildren) { React.useEffect(() => { configHelper.get().then(setConfigs) }, []) + + const everUpdatedRef = React.useRef(false) + React.useEffect(() => { + if (everUpdatedRef.current && configs) configHelper.set(configs) + }, [configs]) const onChange = React.useCallback( (updatedConfigs: Partial) => { - const mergedConfigs = { ...configs, ...updatedConfigs } as Config - configHelper.set(mergedConfigs) - setConfigs(mergedConfigs) + everUpdatedRef.current = true + setConfigs(configs => (configs ? { ...configs, ...updatedConfigs } : configs)) }, - [configs, setConfigs], + [setConfigs], ) + if (configs === null) return null + return ( {props.children}