import { faSearch, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import React, { FunctionComponent, useMemo } from "react"; import { Badge } from "react-bootstrap"; import { Column } from "react-table"; import { MoviesApi } from "../../apis"; import { AsyncButton, LanguageText, SimpleTable } from "../../components"; const missingText = "Missing Subtitles"; interface Props { movie: Item.Movie; update: (id: number) => void; } const Table: FunctionComponent = (props) => { const { movie, update } = props; const columns: Column[] = useMemo[]>( () => [ { Header: "Subtitle Path", accessor: "path", Cell: (row) => { if (row.value === null || row.value.length === 0) { return "Video File Subtitle Track"; } else if (row.value === missingText) { return {row.value}; } else { return row.value; } }, }, { Header: "Language", accessor: "name", Cell: ({ row }) => { if (row.original.path === missingText) { return ( ); } else { return ( ); } }, }, { accessor: "code2", Cell: (row) => { const { original } = row.row; if (original.path === null || original.path.length === 0) { return null; } else if (original.path === missingText) { return ( MoviesApi.downloadSubtitles(movie.radarrId, { language: original.code2, hi: original.hi, forced: original.forced, }) } onSuccess={() => update(movie.radarrId)} variant="light" size="sm" > ); } else { return ( MoviesApi.deleteSubtitles(movie.radarrId, { language: original.code2, hi: original.hi, forced: original.forced, path: original.path ?? "", }) } onSuccess={() => update(movie.radarrId)} > ); } }, }, ], [movie, update] ); const data: Subtitle[] = useMemo(() => { const missing = movie.missing_subtitles.map((item) => { item.path = missingText; return item; }); return movie.subtitles.concat(missing); }, [movie.missing_subtitles, movie.subtitles]); return ( ); }; export default Table;