UNPKG

rwsdk

Version:

Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime

25 lines (24 loc) 837 B
"use client"; import { useCallback, useRef } from "react"; export function useTurnstile(siteKey) { const containerRef = useRef(null); const resolverRef = useRef(Promise.withResolvers()); const widgetIdRef = useRef(null); const challenge = useCallback(async () => { if (!widgetIdRef.current && containerRef.current && window.turnstile) { widgetIdRef.current = window.turnstile.render(containerRef.current, { sitekey: import.meta.env.VITE_IS_DEV_SERVER ? "1x00000000000000000000AA" : siteKey, callback: (token) => resolverRef.current.resolve(token), }); } return resolverRef.current.promise; }, [siteKey]); return { ref: containerRef, challenge, }; }