import { useMemo } from "react"; import { Toggle, SettingsManager } from "Components/UserSettings"; const { Provider: OtherSettingsProvider, useSettings: useOtherSettings } = new SettingsManager<"other">({ /* istanbul ignore next */ beforeUpdate: (prevState, update) => { // If user disabled caching, clear the data cache if (prevState.cacheEnabled === true && update.cacheEnabled === false) { setTimeout(() => { window.zoteroRoam?.clearDataCache?.(); }, 1000); } } }); function OtherSettingsWidget() { const [ { autoload, cacheEnabled, darkTheme, render_inline }, setOpts ] = useOtherSettings(); const handlers = useMemo(() => { function toggleBool(op){ setOpts(prevState => ({ ...prevState, [op]: !prevState[op] })); } return { toggleAutoload: () => toggleBool("autoload"), toggleCacheEnabled: () => toggleBool("cacheEnabled"), toggleDarkTheme: () => toggleBool("darkTheme"), toggleRenderInline: () => toggleBool("render_inline") }; }, [setOpts]); return <> ; } export { OtherSettingsProvider, OtherSettingsWidget, useOtherSettings };