about summary refs log tree commit diff
path: root/src/lib/hooks/useCallOnce.ts
blob: fa01cf4aa3092bb3df3bdf06444586a77b15604a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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],
  )
}