Skip to content
File

Blob: src/client/hooks/useTurnstileForm.ts

typescript33 lines
1import { useCallback, useState } from "react";
2 
3interface UseTurnstileFormOptions {
4 onTurnstileError?: (turnstileError: string) => void;
5}
6 
7export function useTurnstileForm(options: UseTurnstileFormOptions = {}) {
8 const [turnstileToken, setTurnstileToken] = useState<string | null>(null);
9 const [turnstileResetKey, setTurnstileResetKey] = useState(0);
10 
11 const resetTurnstile = useCallback(() => {
12 setTurnstileToken(null);
13 setTurnstileResetKey((value) => value + 1);
14 }, []);
15 
16 const handleTurnstileError = useCallback(
17 (turnstileError: string | null) => {
18 if (turnstileError) {
19 options.onTurnstileError?.(turnstileError);
20 }
21 },
22 [options.onTurnstileError],
23 );
24 
25 return {
26 turnstileToken,
27 setTurnstileToken,
28 turnstileResetKey,
29 handleTurnstileError,
30 resetTurnstile,
31 };
32}