'use client'; import { useState, useEffect } from 'react'; import { useAuth } from '@/lib/auth/AuthContext'; import { EULADialog } from './EULADialog'; import { useRouter } from 'next/navigation'; import apiClient from '@/lib/api/client'; export function EULACheck() { const { user, logout, refreshUser } = useAuth(); const router = useRouter(); const [showDialog, setShowDialog] = useState(false); const [checking, setChecking] = useState(true); useEffect(() => { // Only check EULA acceptance for authenticated users if (user) { console.log('🔍 Checking EULA acceptance:', { userId: user.id, eulaAcceptedAt: user.eulaAcceptedAt, eulaVersion: user.eulaVersion, }); // Show dialog if user hasn't accepted EULA if (!user.eulaAcceptedAt) { console.log('⚠️ User has not accepted EULA, showing dialog'); setShowDialog(true); } else { console.log('✅ EULA already accepted on', user.eulaAcceptedAt); } } setChecking(false); }, [user]); const handleAccept = async () => { try { console.log('✅ User accepted EULA, calling API...'); const response = await apiClient.post('/api/v1/auth/eula/accept', { version: '2025-10-04', }); console.log('✅ EULA acceptance recorded:', response.data); // Close dialog immediately setShowDialog(false); // Refresh user data to get updated EULA acceptance await refreshUser(); console.log('✅ User data refreshed after EULA acceptance'); } catch (error) { console.error('❌ Failed to accept EULA:', error); alert('Failed to accept EULA. Please try again.'); } }; const handleDecline = async () => { console.log('❌ User declined EULA, logging out...'); alert('You must accept the Terms of Service, Privacy Policy, and EULA to use ParentFlow.'); await logout(); router.push('/login'); }; // Don't render anything while checking or if user hasn't loaded if (checking || !user) { return null; } return ( ); }