/ hooks / useCloudflareDetection.ts
useCloudflareDetection.ts
 1  import { useState } from 'react';
 2  import { useRouter } from 'expo-router';
 3  
 4  export const useCloudflareDetection = () => {
 5    const [isCloudflareDetected, setIsCloudflareDetected] = useState(false);
 6    const [previousRoute, setPreviousRoute] = useState<string>('/');
 7    const router = useRouter();
 8  
 9    const checkForCloudflare = (html: string, currentRoute?: string) => {
10      if (
11        html.includes('cf-browser-verification') ||
12        html.includes('cf_captcha_kind')
13      ) {
14        setIsCloudflareDetected(true);
15        if (currentRoute) {
16          setPreviousRoute(currentRoute);
17        }
18        router.push('/cloudflare');
19        return true;
20      }
21      return false;
22    };
23  
24    const handleVerificationComplete = () => {
25      setIsCloudflareDetected(false);
26      router.replace(previousRoute as any);
27    };
28  
29    return {
30      isCloudflareDetected,
31      checkForCloudflare,
32      handleVerificationComplete,
33      resetCloudflareDetection: () => {
34        setIsCloudflareDetected(false);
35        setPreviousRoute('/');
36      },
37    };
38  };