overleaf/services/web/frontend/js/shared/hooks/use-detach-state-watcher.ts
ilkin-overleaf d959dbc236 Merge pull request #11105 from overleaf/ii-shared-hooks-js-to-ts-conversion
[web] Shared React hooks JS to TS conversion

GitOrigin-RevId: 0ccdebff236c7424b1a73cd7d6646a9d01a20eb1
2023-01-10 09:05:52 +00:00

32 lines
616 B
TypeScript

import { useEffect } from 'react'
import useDetachState, {
DetachRole,
DetachTargetRole,
} from './use-detach-state'
type UseDetachParams = Parameters<typeof useDetachState>
function useDetachStateWatcher<
S extends DetachRole,
T extends DetachTargetRole<S>
>(
key: UseDetachParams[0],
stateValue: UseDetachParams[1],
senderRole: S,
targetRole: T
) {
const [value, setValue] = useDetachState(
key,
stateValue,
senderRole,
targetRole
)
useEffect(() => {
setValue(stateValue)
}, [setValue, stateValue])
return [value, setValue]
}
export default useDetachStateWatcher