wulf-pulse/components/configuration-items/contact-cell.tsx
Lorentz Hinrichsen 3c3124d8c9 Restructure: rename to Pulse and move app to root
- Renamed project from PSA-Utils to Pulse
- Moved all app files from autotask-app/ to root
- Updated package.json name to 'pulse'
- Updated Docker container names to pulse-app and pulse-redis
- Updated Docker network name to pulse-network
2025-10-28 23:08:54 -04:00

59 lines
1.4 KiB
TypeScript

'use client';
import { useState, useEffect } from 'react';
import { Badge } from '@/components/ui/badge';
import { User } from 'lucide-react';
interface ContactCellProps {
contactId?: number;
}
export function ContactCell({ contactId }: ContactCellProps) {
const [contactName, setContactName] = useState<string | null>(null);
const [loading, setLoading] = useState(false);
useEffect(() => {
if (!contactId) {
setContactName(null);
return;
}
const fetchContact = async () => {
setLoading(true);
try {
const response = await fetch(`/api/contacts/${contactId}`);
if (response.ok) {
const data = await response.json();
if (data.contact) {
setContactName(`${data.contact.firstName} ${data.contact.lastName}`);
}
}
} catch (err) {
console.error('Failed to fetch contact:', err);
} finally {
setLoading(false);
}
};
fetchContact();
}, [contactId]);
if (loading) {
return <span className="text-xs text-muted-foreground">Loading...</span>;
}
if (!contactId) {
return <span className="text-xs text-muted-foreground">-</span>;
}
if (contactName) {
return (
<Badge variant="outline" className="text-xs">
<User className="w-3 h-3 mr-1" />
{contactName}
</Badge>
);
}
return <span className="text-xs text-muted-foreground">ID: {contactId}</span>;
}