mirror of
https://github.com/pybricks/pybricks-code.git
synced 2026-09-14 10:35:11 +00:00
Also fix all errors, which can lead to subtile bugs. Mostly fixings deps and refactoring to make typescript happy.
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
// SPDX-License-Identifier: MIT
|
|
// Copyright (c) 2022 The Pybricks Authors
|
|
|
|
import { useCallback, useEffect } from 'react';
|
|
import { useEffectOnce, useLocalStorage, useSessionStorage } from 'usehooks-ts';
|
|
|
|
/** Hook for "showDocs" setting. */
|
|
export function useSettingIsShowDocsEnabled(): {
|
|
isSettingShowDocsEnabled: boolean;
|
|
setIsSettingShowDocsEnabled: (value: boolean) => void;
|
|
toggleIsSettingShowDocsEnabled: () => void;
|
|
} {
|
|
const [isLastSettingShowDocsEnabled, setIsLastSettingShowDocsEnabled] =
|
|
useLocalStorage('setting.showDocs', window.innerWidth >= 1024);
|
|
|
|
const [isSettingShowDocsEnabled, setIsSettingShowDocsEnabled] = useSessionStorage(
|
|
'setting.showDocs',
|
|
isLastSettingShowDocsEnabled,
|
|
);
|
|
|
|
// Force writing to session storage since default value is not constant.
|
|
useEffectOnce(() => setIsSettingShowDocsEnabled(isSettingShowDocsEnabled));
|
|
|
|
useEffect(() => {
|
|
setIsLastSettingShowDocsEnabled(isSettingShowDocsEnabled);
|
|
}, [isSettingShowDocsEnabled, setIsLastSettingShowDocsEnabled]);
|
|
|
|
const toggleIsSettingShowDocsEnabled = useCallback(
|
|
() => setIsSettingShowDocsEnabled((x) => !x),
|
|
[setIsSettingShowDocsEnabled],
|
|
);
|
|
|
|
return {
|
|
isSettingShowDocsEnabled,
|
|
setIsSettingShowDocsEnabled,
|
|
toggleIsSettingShowDocsEnabled,
|
|
};
|
|
}
|