'use client'; import { useState, useEffect } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Badge } from '@/components/ui/badge'; import { Skeleton } from '@/components/ui/skeleton'; import { PSATab } from './psa-tab'; import { RMMTab } from './rmm-tab'; import { StatusCards } from './status-cards'; import { Server, Monitor, AlertCircle } from 'lucide-react'; import { ConfigurationItem } from '@/lib/types/autotask'; import { DattoRMMDevice } from '@/lib/types/datto-rmm'; interface ConfigItemDetail { autotaskDevice?: ConfigurationItem; rmmDevice?: DattoRMMDevice; companyName?: string; } interface ConfigItemModalProps { itemId: string | number | null; type?: 'autotask' | 'rmm'; open: boolean; onOpenChange: (open: boolean) => void; } export function ConfigItemModal({ itemId, type = 'autotask', open, onOpenChange }: ConfigItemModalProps) { const [data, setData] = useState({}); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); useEffect(() => { if (!open || !itemId) { return; } const fetchData = async () => { setLoading(true); setError(null); try { const response = await fetch(`/api/configuration-items/${itemId}?type=${type}`); if (!response.ok) { throw new Error('Failed to fetch configuration item'); } const result = await response.json(); setData(result); } catch (err) { setError(err instanceof Error ? err.message : 'An error occurred'); } finally { setLoading(false); } }; fetchData(); }, [itemId, type, open]); const handleUpdate = (updatedDevice: ConfigurationItem) => { setData({ ...data, autotaskDevice: updatedDevice }); }; const device = data.autotaskDevice; const rmmDevice = data.rmmDevice; return (
{device?.referenceTitle || rmmDevice?.hostname || 'Configuration Item'}
{data.companyName && (
{data.companyName}
)}
{loading ? (
) : error ? (

Error: {error}

) : (
{/* Status Cards */} {/* Tabs */} PSA Data {device && ( {device.isActive ? 'Active' : 'Inactive'} )} RMM Data {rmmDevice && ( {rmmDevice.online ? 'Online' : 'Offline'} )}
)}
); }