import { faCloudUploadAlt, faHistory, faSearch, faSync, faToolbox, faUser, faWrench, } from "@fortawesome/free-solid-svg-icons"; import React, { FunctionComponent, useState } from "react"; import { Alert, Container, Row } from "react-bootstrap"; import { Helmet } from "react-helmet"; import { Redirect, RouteComponentProps, withRouter } from "react-router-dom"; import { dispatchTask } from "../../@modules/task"; import { useIsAnyTaskRunningWithId } from "../../@modules/task/hooks"; import { createTask } from "../../@modules/task/utilities"; import { useMovieBy, useProfileBy } from "../../@redux/hooks"; import { MoviesApi, ProvidersApi } from "../../apis"; import { ContentHeader, ItemEditorModal, LoadingIndicator, MovieHistoryModal, MovieUploadModal, SubtitleToolModal, useShowModal, } from "../../components"; import { ManualSearchModal } from "../../components/modals/ManualSearchModal"; import { RouterEmptyPath } from "../../special-pages/404"; import { useOnLoadedOnce } from "../../utilities"; import ItemOverview from "../generic/ItemOverview"; import Table from "./table"; const download = (item: Item.Movie, result: SearchResultType) => { const { language, hearing_impaired, forced, provider, subtitle } = result; return ProvidersApi.downloadMovieSubtitle(item.radarrId, { language, hi: hearing_impaired, forced, provider, subtitle, }); }; interface Params { id: string; } interface Props extends RouteComponentProps {} const MovieDetailView: FunctionComponent = ({ match }) => { const id = Number.parseInt(match.params.id); const movie = useMovieBy(id); const item = movie.content; const profile = useProfileBy(movie.content?.profileId); const showModal = useShowModal(); const [valid, setValid] = useState(true); const hasTask = useIsAnyTaskRunningWithId([id]); useOnLoadedOnce(() => { if (movie.content === null) { setValid(false); } }, movie); if (isNaN(id) || !valid) { return ; } if (!item) { return ; } const allowEdit = item.profileId !== undefined; return ( {item.title} - Bazarr (Movies) { const task = createTask( item.title, id, MoviesApi.action.bind(MoviesApi), { action: "scan-disk", radarrid: id } ); dispatchTask("Scaning Disk...", [task], "Scaning..."); }} > Scan Disk { const task = createTask( item.title, id, MoviesApi.action.bind(MoviesApi), { action: "search-missing", radarrid: id, } ); dispatchTask("Searching subtitles...", [task], "Searching..."); }} > Search showModal("manual-search", item)} > Manual showModal("history", item)} > History showModal("tools", [item])} > Tools showModal("upload", item)} > Upload showModal("edit", item)} > Edit Movie A background task is running for this movie, actions are unavailable
MoviesApi.modify(form)} >
); }; export default withRouter(MovieDetailView);