import { useRef } from '../lib/teact/teact'; import useEffectOnce from './useEffectOnce'; import usePreviousDeprecated from './usePreviousDeprecated'; export default function useSyncEffect( effect: (args: T | readonly []) => NoneToVoidFunction | void, dependencies: T, ) { const prevDeps = usePreviousDeprecated(dependencies); const cleanupRef = useRef(); if (!prevDeps || dependencies.some((d, i) => d !== prevDeps[i])) { cleanupRef.current?.(); cleanupRef.current = effect(prevDeps || []) ?? undefined; } useEffectOnce(() => { return () => { cleanupRef.current?.(); }; }); }