'use client'; import { useState, useEffect } from 'react'; import { useParams, useRouter, useSearchParams } from 'next/navigation'; import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Skeleton } from '@/components/ui/skeleton'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { ThemeToggle } from '@/components/theme-toggle'; import { PSATab } from '@/components/configuration-items/psa-tab'; import { RMMTab } from '@/components/configuration-items/rmm-tab'; import { StatusCards } from '@/components/configuration-items/status-cards'; import { Server, Monitor, ArrowLeft, AlertCircle, RefreshCw } from 'lucide-react'; import { ConfigurationItem } from '@/lib/types/autotask'; import { DattoRMMDevice } from '@/lib/types/datto-rmm'; interface ConfigItemDetail { autotaskDevice?: ConfigurationItem; rmmDevice?: DattoRMMDevice; companyName?: string; } export default function ConfigurationItemDetailPage() { const params = useParams(); const router = useRouter(); const searchParams = useSearchParams(); const [data, setData] = useState({}); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); // Get company context from URL params const companyId = searchParams.get('companyId'); const companyName = searchParams.get('companyName'); // Parse the ID parameter - it might be "at-123" or "rmm-abc" or "123" const parseItemId = () => { const id = params.id as string; if (id.startsWith('at-')) { return { type: 'autotask', id: id.substring(3) }; } else if (id.startsWith('rmm-')) { return { type: 'rmm', id: id.substring(4) }; } else { return { type: 'autotask', id }; // Default to Autotask } }; useEffect(() => { const fetchData = async () => { setLoading(true); setError(null); try { const { type, id } = parseItemId(); // Fetch the configuration item details const response = await fetch(`/api/configuration-items/${id}?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(); }, [params.id]); const handleUpdate = (updatedDevice: ConfigurationItem) => { setData({ ...data, autotaskDevice: updatedDevice }); }; if (loading) { return (
); } if (error) { return (

Error: {error}

); } const device = data.autotaskDevice; const rmmDevice = data.rmmDevice; return (
{/* Header */}

{device?.referenceTitle || rmmDevice?.hostname || 'Configuration Item'}

{data.companyName || 'Configuration Item Details'}

{/* Main Content */}
{/* Status Cards */} {/* Tabs */} PSA Data RMM Data
); }