export default function()

in packages/@fbcmobile-ui/Hooks/useSingleResource.js [16:38]


export default function(useResource: () => void) {
  const [resourceAcquired, setResourceAcquired] = useState(false);

  // Unlike traditional locks, operations that fail to grab lock are skipped.
  useEffect(() => {
    if (resourceAcquired) {
      useResource();
    }
  }, [resourceAcquired, useResource]);

  const acquireResource = () => {
    setResourceAcquired(true);
  };

  const releaseResource = () => {
    setResourceAcquired(false);
  };

  return {
    runOrSkip: acquireResource,
    release: releaseResource,
  };
}