/** * Admin Sync Page * Main page for controlling and monitoring Autotask PostgreSQL sync operations */ 'use client'; import { useState, useEffect } from 'react'; import SyncControlPanel from '@/components/admin/SyncControlPanel'; import SyncDashboard from '@/components/admin/SyncDashboard'; import SyncHistoryTable from '@/components/admin/SyncHistoryTable'; import { EntityType } from '@/lib/types/sync'; import { Button } from '@/components/ui/button'; import { ArrowLeft, Home } from 'lucide-react'; import Link from 'next/link'; export default function AdminSyncPage() { const [selectedEntities, setSelectedEntities] = useState([]); const [isSyncing, setIsSyncing] = useState(false); const [refreshKey, setRefreshKey] = useState(0); // Auto-refresh during sync and check if sync completed useEffect(() => { if (isSyncing) { const interval = setInterval(async () => { setRefreshKey(prev => prev + 1); // Check if sync is still in progress try { const response = await fetch('/api/sync/status'); if (response.ok) { const data = await response.json(); // If no sync in progress, mark as complete if (!data.inProgress) { setIsSyncing(false); } } } catch (error) { console.error('Failed to check sync status:', error); } }, 5000); // Refresh every 5 seconds return () => clearInterval(interval); } }, [isSyncing]); const handleSyncStart = () => { setIsSyncing(true); }; const handleSyncComplete = () => { setIsSyncing(false); setRefreshKey(prev => prev + 1); }; return (

Autotask Sync

Sync Autotask data to PostgreSQL database

{/* Sync Control Panel */} {/* Sync Dashboard */} {/* Sync History */}
); }