import React, { useState } from 'react'; import { useAppStateContext } from '../context/user.data.context'; import { verifyUser, getUser } from '../service/user/user.service'; import { recomaze_ai_personalization_env } from '../env'; import type { IUser } from '../types'; const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; const PHONE_REGEX = /^\+[1-9]\d{7,14}$/; const VerificationModal = (): JSX.Element | null => { const { user, setUser } = useAppStateContext(); const [email, setEmail] = useState(user?.email || ''); const [phoneNumber, setPhoneNumber] = useState(''); const [emailError, setEmailError] = useState(''); const [phoneError, setPhoneError] = useState(''); const [apiError, setApiError] = useState(''); const [submitting, setSubmitting] = useState(false); if (!user || user.verified) return null; const validate = (): boolean => { let valid = true; if (!email.trim() || !EMAIL_REGEX.test(email.trim())) { setEmailError('Please enter a valid email address.'); valid = false; } else { setEmailError(''); } if (!phoneNumber.trim() || !PHONE_REGEX.test(phoneNumber.trim())) { setPhoneError( 'Please enter a valid phone number in international format (e.g. +12025551234).' ); valid = false; } else { setPhoneError(''); } return valid; }; const handleSubmit = async () => { if (!validate()) return; setSubmitting(true); setApiError(''); try { const response = await verifyUser({ email: email.trim(), phone_number: phoneNumber.trim(), }); if (response?.success || response?.verified) { const userResponse = await getUser(); if (userResponse?.success) { setUser(userResponse); } else { setUser({ ...user, verified: true } as IUser); } } else { setApiError( response?.message || response?.error || 'Verification failed. Please try again.' ); } } catch { setApiError('Something went wrong. Please try again.'); } finally { setSubmitting(false); } }; return (
Every week we{`'`}ll show you which AI engines recommend you vs competitors, what customers ask AI about your products, and critical catalog issues. Use an inbox you check regularly.
{emailError}
)}{phoneError}
)}{apiError}