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 };