import { useMemo } from 'react'; import { Button } from '@renderer/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@renderer/components/ui/dialog'; import { Label } from '@renderer/components/ui/label'; import { MentionableTextarea } from '@renderer/components/ui/MentionableTextarea'; import { useDraftPersistence } from '@renderer/hooks/useDraftPersistence'; import { formatAgentRole } from '@renderer/utils/formatAgentRole'; import type { MentionSuggestion } from '@renderer/types/mention'; import type { ResolvedTeamMember } from '@shared/types'; interface ReviewDialogProps { open: boolean; teamName: string; taskId: string | null; members: ResolvedTeamMember[]; onCancel: () => void; onSubmit: (comment?: string) => void; } export const ReviewDialog = ({ open, teamName, taskId, members, onCancel, onSubmit, }: ReviewDialogProps): React.JSX.Element => { const draft = useDraftPersistence({ key: `requestChanges:${teamName}:${taskId ?? ''}`, enabled: Boolean(teamName && taskId), }); const mentionSuggestions = useMemo( () => members.map((m) => ({ id: m.name, name: m.name, subtitle: formatAgentRole(m.role) ?? formatAgentRole(m.agentType) ?? undefined, color: m.color, })), [members] ); const handleCancel = (): void => { onCancel(); }; const handleSubmit = (): void => { const trimmed = draft.value.trim() || undefined; draft.clearDraft(); onSubmit(trimmed); }; return ( { if (!nextOpen) { handleCancel(); } }} > Request Changes Task #{taskId}
Draft saved ) : undefined } />
); };