diff options
Diffstat (limited to 'src/lib/hooks/useCallOnce.ts')
-rw-r--r-- | src/lib/hooks/useCallOnce.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/lib/hooks/useCallOnce.ts b/src/lib/hooks/useCallOnce.ts new file mode 100644 index 000000000..fa01cf4aa --- /dev/null +++ b/src/lib/hooks/useCallOnce.ts @@ -0,0 +1,20 @@ +import {useCallback} from 'react' + +export enum OnceKey { + PreferencesThread = 'preferences:thread', +} + +const called: Record<OnceKey, boolean> = { + [OnceKey.PreferencesThread]: false, +} + +export function useCallOnce(key: OnceKey) { + return useCallback( + (cb: () => void) => { + if (called[key] === true) return + called[key] = true + cb() + }, + [key], + ) +} |