import { useEffect, useMemo, useState } from 'react'; import { Dialog } from 'primereact/dialog'; import { Button } from 'primereact/button'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { InputText } from 'primereact/inputtext'; export default function MetadataSelectionDialog({ visible, context, onHide, onSubmit, onSearch, busy }) { const [selected, setSelected] = useState(null); const [query, setQuery] = useState(''); const [manualTitle, setManualTitle] = useState(''); const [manualYear, setManualYear] = useState(''); const [manualImdb, setManualImdb] = useState(''); const [extraResults, setExtraResults] = useState([]); useEffect(() => { if (!visible) { return; } const selectedMetadata = context?.selectedMetadata || {}; const defaultTitle = selectedMetadata.title || context?.detectedTitle || ''; const defaultYear = selectedMetadata.year ? String(selectedMetadata.year) : ''; const defaultImdb = selectedMetadata.imdbId || ''; setSelected(null); setQuery(defaultTitle); setManualTitle(defaultTitle); setManualYear(defaultYear); setManualImdb(defaultImdb); setExtraResults([]); }, [visible, context]); const rows = useMemo(() => { const base = context?.omdbCandidates || []; const all = [...base, ...extraResults]; const map = new Map(); all.forEach((item) => { if (item?.imdbId) { map.set(item.imdbId, item); } }); return Array.from(map.values()); }, [context, extraResults]); const titleWithPosterBody = (row) => (