import { useState, useEffect } from 'react'; const GarminSync = () => { const [syncStatus, setSyncStatus] = useState(null); const [syncing, setSyncing] = useState(false); const [error, setError] = useState(null); const triggerSync = async () => { setSyncing(true); setError(null); try { // Check API key configuration if (!process.env.REACT_APP_API_KEY) { throw new Error('API key missing - check environment configuration'); } const response = await fetch('/api/workouts/sync', { method: 'POST', headers: { 'X-API-Key': process.env.REACT_APP_API_KEY, 'Content-Type': 'application/json' } }); if (!response.ok) { throw new Error(`Sync failed: ${response.statusText}`); } // Start polling for status updates pollSyncStatus(); } catch (err) { console.error('Garmin sync failed:', err); setError(err.message); setSyncing(false); } }; const pollSyncStatus = () => { const interval = setInterval(async () => { try { const response = await fetch('/api/workouts/sync-status'); const status = await response.json(); setSyncStatus(status); // Stop polling when sync is no longer in progress if (status.status !== 'in_progress') { setSyncing(false); clearInterval(interval); } } catch (err) { console.error('Error fetching sync status:', err); setError('Failed to get sync status'); setSyncing(false); clearInterval(interval); } }, 2000); }; return (