'use client'; import { useState, useEffect } from 'react'; import Link from 'next/link'; import { Button } from '@/components/ui/button'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { ArrowLeft, Activity, History, Calendar, Database } from 'lucide-react'; import SyncControlPanel from '@/components/admin/SyncControlPanel'; import SyncDashboard from '@/components/admin/SyncDashboard'; import SyncHistoryTable from '@/components/admin/SyncHistoryTable'; import SyncScheduler from '@/components/admin/SyncScheduler'; import { EntityType } from '@/lib/types/sync'; export default function AutotaskSyncPage() { const [selectedEntities, setSelectedEntities] = useState([]); const [isSyncing, setIsSyncing] = useState(false); const [refreshKey, setRefreshKey] = useState(0); useEffect(() => { if (!isSyncing) return; const interval = setInterval(async () => { setRefreshKey(prev => prev + 1); try { const res = await fetch('/api/sync/status'); if (res.ok) { const d = await res.json(); if (!d.inProgress) setIsSyncing(false); } } catch {} }, 5000); return () => clearInterval(interval); }, [isSyncing]); return (

PSA — Autotask

Tickets, companies, contacts, time entries, configuration items

setIsSyncing(true)} onSyncComplete={() => { setIsSyncing(false); setRefreshKey(k => k + 1); }} isSyncing={isSyncing} /> Status History Schedules
); }