import { isRecordChanged } from '../../../../utils/recordChanged'; import { useState } from 'react'; import { Building2, Stethoscope } from 'lucide-react'; import { SheetDescription, SheetHeader, SheetTitle } from '../../../../components/ui/sheet.tsx'; import { Button } from '../../../../components/ui/button.tsx'; import { Input } from '../../../../components/ui/input.tsx'; import { Label } from '../../../../components/ui/label.tsx'; import { OutsideProviderEntry, OutsideProviderKind } from '../../../../utils/outsideProviders.ts'; interface OutsideProviderFormProps { entry?: OutsideProviderEntry; saving: boolean; onSave: (entry: Omit, localId?: string) => Promise; onDone: () => void; } const OutsideProviderForm = ({ entry, saving, onSave, onDone }: OutsideProviderFormProps) => { const [kind, setKind] = useState(entry?.kind ?? 'practitioner'); const [name, setName] = useState(entry?.name ?? ''); const [specialty, setSpecialty] = useState(entry?.specialty ?? ''); const [phone, setPhone] = useState(entry?.phone ?? ''); const [city, setCity] = useState(entry?.city ?? ''); const [formError, setFormError] = useState(); const handleSave = async () => { if (!name.trim()) { setFormError('Name is required.'); return; } setFormError(undefined); try { await onSave( { kind, name: name.trim(), ...(specialty.trim() && { specialty: specialty.trim() }), ...(phone.trim() && { phone: phone.trim() }), ...(city.trim() && { city: city.trim() }) }, entry?.localId ); onDone(); } catch (err) { const message = err instanceof Error ? err.message : String(err); if (isRecordChanged(err)) { setFormError(message); } else if (message.includes('403') || /forbidden|not authorized/i.test(message)) { setFormError("Your account can't save this yet — please contact support."); } else { setFormError('Failed to save. Please try again.'); } } }; return (
{entry ? 'Edit Outside Provider' : 'Add Outside Provider'}
) => setName(e.target.value)} />
) => setSpecialty(e.target.value)} />
) => setPhone(e.target.value)} />
) => setCity(e.target.value)} />
{formError && (

{formError}

)}
); }; export default OutsideProviderForm;