'use client'; import { useState } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, DialogFooter, DialogDescription, } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; import { Share2 } from 'lucide-react'; import { toast } from 'sonner'; interface ShareModalProps { analysisId: string; } export function ShareModal({ analysisId }: ShareModalProps) { const [open, setOpen] = useState(false); const [recipientEmail, setRecipientEmail] = useState(''); const [note, setNote] = useState(''); const [submitting, setSubmitting] = useState(false); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setSubmitting(true); try { const res = await fetch(`/api/analyzer/analyses/${analysisId}/share`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ recipientEmail, note: note.trim() || undefined, }), }); if (!res.ok) { const data = (await res.json().catch(() => ({}))) as { error?: string; message?: string }; throw new Error(data.message ?? data.error ?? `Request failed: ${res.status}`); } toast.success(`Shared with ${recipientEmail}`); setOpen(false); setRecipientEmail(''); setNote(''); } catch (err) { const msg = err instanceof Error ? err.message : 'Unknown error'; toast.error(msg); } finally { setSubmitting(false); } } return ( Share this analysis Recipient must be on an allowed domain (set via ALLOWED_SHARE_DOMAINS).
setRecipientEmail(e.target.value)} placeholder="colleague@wulfconsulting.com" />