From 9bd913e1746b0c6eac9c294e96fe8d157072d139 Mon Sep 17 00:00:00 2001 From: Ajay Bura <32841439+ajbura@users.noreply.github.com> Date: Sat, 31 Dec 2022 19:10:00 +0530 Subject: [PATCH] Extract set settings hook --- src/app/state/hooks/settings.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/app/state/hooks/settings.ts b/src/app/state/hooks/settings.ts index e1de5579..3f4dab60 100644 --- a/src/app/state/hooks/settings.ts +++ b/src/app/state/hooks/settings.ts @@ -1,15 +1,13 @@ import { atom, useAtomValue, useSetAtom, WritableAtom } from 'jotai'; +import { SetAtom } from 'jotai/core/atom'; import { selectAtom } from 'jotai/utils'; import { useMemo } from 'react'; import { Settings } from '../settings'; -export const useSetting = ( +export const useSetSetting = ( settingsAtom: WritableAtom, key: K -): [Settings[K], (value: Settings[K]) => void] => { - const selector = useMemo(() => (s: Settings) => s[key], [key]); - const setting = useAtomValue(selectAtom(settingsAtom, selector)); - +) => { const setterAtom = useMemo( () => atom(null, (get, set, value) => { @@ -20,7 +18,17 @@ export const useSetting = ( [settingsAtom, key] ); - const setter = useSetAtom(setterAtom); + return useSetAtom(setterAtom); +}; + +export const useSetting = ( + settingsAtom: WritableAtom, + key: K +): [Settings[K], SetAtom] => { + const selector = useMemo(() => (s: Settings) => s[key], [key]); + const setting = useAtomValue(selectAtom(settingsAtom, selector)); + + const setter = useSetSetting(settingsAtom, key); return [setting, setter]; };