diff --git a/sites/shared/components/workbench/menu/core-settings/core-setting-sa-bool.js b/sites/shared/components/workbench/menu/core-settings/core-setting-sa-bool.js index 0ad646c732b..cc39a27175e 100644 --- a/sites/shared/components/workbench/menu/core-settings/core-setting-sa-bool.js +++ b/sites/shared/components/workbench/menu/core-settings/core-setting-sa-bool.js @@ -9,6 +9,7 @@ const CoreSettingSaBool = props => { const toggle = () => { props.setGist({ + ...props.gist, saBool: !value, sa: value ? 0 : props.gist.saMm }) diff --git a/sites/shared/components/workbench/menu/core-settings/core-setting-sa-mm.js b/sites/shared/components/workbench/menu/core-settings/core-setting-sa-mm.js index b743c62321d..8c0da90b45f 100644 --- a/sites/shared/components/workbench/menu/core-settings/core-setting-sa-mm.js +++ b/sites/shared/components/workbench/menu/core-settings/core-setting-sa-mm.js @@ -15,6 +15,7 @@ const CoreSettingMm = props => { setValue(newVal) if (props.gist.sa) props.setGist({ + ...props.gist, saMm: newVal, sa: newVal, }) diff --git a/sites/shared/components/wrappers/workbench.js b/sites/shared/components/wrappers/workbench.js index dabeb628459..0e48b6665ce 100644 --- a/sites/shared/components/wrappers/workbench.js +++ b/sites/shared/components/wrappers/workbench.js @@ -67,11 +67,11 @@ const WorkbenchWrapper = ({ app, design, preload=false, from=false, layout=false const doPreload = async () => { if (preload && from && preloaders[from]) { const g = await preloaders[from](preload, design) - setGist({...g.settings}) + setGist({...gist, ...g.settings}) } } doPreload(); - }, [preload, from]) + }, [preload, from, gist]) // Helper methods to manage the gist state const updateWBGist = useMemo(() => (path, value, closeNav=false) => { diff --git a/sites/shared/hooks/useGist.js b/sites/shared/hooks/useGist.js index 63d1e96631e..8d800f0edb8 100644 --- a/sites/shared/hooks/useGist.js +++ b/sites/shared/hooks/useGist.js @@ -19,18 +19,11 @@ const defaultGist = (design, locale='en') => { // generate the gist state and its handlers export function useGist(design, app) { // get the localstorage state and setter - const [gist, _setGist, gistReady] = useLocalStorage(`${design.config.name}_gist`, defaultGist(design, app.locale)); - - - /** apply new gist values onto existing gist */ - const setGist = (newGist) => { - // setters that are passed a function always use the latest state value, so these don't need to be memoized - _setGist((gistState) => ({...gistState, ...newGist})) - } + const [gist, setGist, gistReady] = useLocalStorage(`${design.config.name}_gist`, defaultGist(design, app.locale)); /** update a single gist value */ const updateGist = (path, value) => { - _setGist((gistState) => { + setGist((gistState) => { const newGist = {...gistState}; set(newGist, path, value); return newGist; @@ -39,22 +32,17 @@ export function useGist(design, app) { /** unset a single gist value */ const unsetGist = (path) => { - _setGist((gistState) => { + setGist((gistState) => { const newGist = {... gistState}; unset(newGist, path); return newGist; }) } - /** replace the entire gist with the given gist */ - const replaceGist = (newGist) => { - _setGist(newGist); - } - /** reset to the default gist */ const clearGist = () => { - replaceGist(defaultGist(design, gist.locale)) + setGist(defaultGist(design, gist.locale)) } - return {gist, setGist, unsetGist, replaceGist, clearGist, gistReady, updateGist}; + return {gist, setGist, unsetGist, clearGist, gistReady, updateGist}; }