diff --git a/frontend/src/App/Router.tsx b/frontend/src/App/Router.tsx index 772311da2..ee520445a 100644 --- a/frontend/src/App/Router.tsx +++ b/frontend/src/App/Router.tsx @@ -3,9 +3,8 @@ import { Redirect, Route, Switch, useHistory } from "react-router-dom"; import { useDidMount } from "rooks"; import { useIsRadarrEnabled, useIsSonarrEnabled } from "../@redux/hooks/site"; import BlacklistRouter from "../Blacklist/Router"; +import DisplayItemRouter from "../DisplayItem/Router"; import HistoryRouter from "../History/Router"; -import MovieRouter from "../Movies/Router"; -import SeriesRouter from "../Series/Router"; import SettingRouter from "../Settings/Router"; import EmptyPage, { RouterEmptyPath } from "../special-pages/404"; import SystemRouter from "../System/Router"; @@ -40,16 +39,9 @@ const Router: FunctionComponent<{ className?: string }> = ({ className }) => { - {sonarr && ( - - - - )} - {radarr && ( - - - - )} + + + diff --git a/frontend/src/Series/Episodes/components.tsx b/frontend/src/DisplayItem/Episodes/components.tsx similarity index 100% rename from frontend/src/Series/Episodes/components.tsx rename to frontend/src/DisplayItem/Episodes/components.tsx diff --git a/frontend/src/Series/Episodes/index.tsx b/frontend/src/DisplayItem/Episodes/index.tsx similarity index 98% rename from frontend/src/Series/Episodes/index.tsx rename to frontend/src/DisplayItem/Episodes/index.tsx index 3e9ae4bfa..2938fa7a8 100644 --- a/frontend/src/Series/Episodes/index.tsx +++ b/frontend/src/DisplayItem/Episodes/index.tsx @@ -23,9 +23,9 @@ import { SeriesUploadModal, useShowModal, } from "../../components"; -import ItemOverview from "../../generic/ItemOverview"; import { RouterEmptyPath } from "../../special-pages/404"; import { useOnLoadedOnce } from "../../utilites"; +import ItemOverview from "../generic/ItemOverview"; import Table from "./table"; interface Params { diff --git a/frontend/src/Series/Episodes/table.tsx b/frontend/src/DisplayItem/Episodes/table.tsx similarity index 100% rename from frontend/src/Series/Episodes/table.tsx rename to frontend/src/DisplayItem/Episodes/table.tsx diff --git a/frontend/src/Movies/Detail/index.tsx b/frontend/src/DisplayItem/MovieDetail/index.tsx similarity index 99% rename from frontend/src/Movies/Detail/index.tsx rename to frontend/src/DisplayItem/MovieDetail/index.tsx index 9c6ff0445..a375953e7 100644 --- a/frontend/src/Movies/Detail/index.tsx +++ b/frontend/src/DisplayItem/MovieDetail/index.tsx @@ -26,9 +26,9 @@ import { useShowModal, } from "../../components"; import { ManualSearchModal } from "../../components/modals/ManualSearchModal"; -import ItemOverview from "../../generic/ItemOverview"; import { RouterEmptyPath } from "../../special-pages/404"; import { useOnLoadedOnce } from "../../utilites"; +import ItemOverview from "../generic/ItemOverview"; import Table from "./table"; const download = (item: Item.Movie, result: SearchResultType) => { diff --git a/frontend/src/Movies/Detail/table.tsx b/frontend/src/DisplayItem/MovieDetail/table.tsx similarity index 100% rename from frontend/src/Movies/Detail/table.tsx rename to frontend/src/DisplayItem/MovieDetail/table.tsx diff --git a/frontend/src/Movies/index.tsx b/frontend/src/DisplayItem/Movies/index.tsx similarity index 90% rename from frontend/src/Movies/index.tsx rename to frontend/src/DisplayItem/Movies/index.tsx index 9b274b376..d9c2fbe1f 100644 --- a/frontend/src/Movies/index.tsx +++ b/frontend/src/DisplayItem/Movies/index.tsx @@ -5,13 +5,13 @@ import React, { FunctionComponent, useMemo } from "react"; import { Badge } from "react-bootstrap"; import { Link } from "react-router-dom"; import { Column } from "react-table"; -import { movieUpdateAll, movieUpdateByRange } from "../@redux/actions"; -import { useMovieEntities } from "../@redux/hooks"; -import { useReduxAction } from "../@redux/hooks/base"; -import { MoviesApi } from "../apis"; -import { ActionBadge, LanguageText, TextPopover } from "../components"; +import { movieUpdateAll, movieUpdateByRange } from "../../@redux/actions"; +import { useMovieEntities } from "../../@redux/hooks"; +import { useReduxAction } from "../../@redux/hooks/base"; +import { MoviesApi } from "../../apis"; +import { ActionBadge, LanguageText, TextPopover } from "../../components"; +import { BuildKey } from "../../utilites"; import BaseItemView from "../generic/BaseItemView"; -import { BuildKey } from "../utilites"; interface Props {} diff --git a/frontend/src/DisplayItem/Router.tsx b/frontend/src/DisplayItem/Router.tsx new file mode 100644 index 000000000..1ab2c4f8a --- /dev/null +++ b/frontend/src/DisplayItem/Router.tsx @@ -0,0 +1,45 @@ +import React, { FunctionComponent } from "react"; +import { Redirect, Route, Switch } from "react-router-dom"; +import { useIsRadarrEnabled, useIsSonarrEnabled } from "../@redux/hooks"; +import { RouterEmptyPath } from "../special-pages/404"; +import Episodes from "./Episodes"; +import MovieDetail from "./MovieDetail"; +import Movies from "./Movies"; +import Series from "./Series"; + +interface Props {} + +const Router: FunctionComponent = () => { + const radarr = useIsRadarrEnabled(); + const sonarr = useIsSonarrEnabled(); + + return ( + + {radarr && ( + + + + )} + {radarr && ( + + + + )} + {sonarr && ( + + + + )} + {sonarr && ( + + + + )} + + + + + ); +}; + +export default Router; diff --git a/frontend/src/Series/index.tsx b/frontend/src/DisplayItem/Series/index.tsx similarity index 91% rename from frontend/src/Series/index.tsx rename to frontend/src/DisplayItem/Series/index.tsx index 4be74bc5a..81f37c021 100644 --- a/frontend/src/Series/index.tsx +++ b/frontend/src/DisplayItem/Series/index.tsx @@ -3,13 +3,13 @@ import React, { FunctionComponent, useMemo } from "react"; import { Badge, ProgressBar } from "react-bootstrap"; import { Link } from "react-router-dom"; import { Column } from "react-table"; -import { seriesUpdateAll, seriesUpdateByRange } from "../@redux/actions"; -import { useSerieEntities } from "../@redux/hooks"; -import { useReduxAction } from "../@redux/hooks/base"; -import { SeriesApi } from "../apis"; -import { ActionBadge } from "../components"; +import { seriesUpdateAll, seriesUpdateByRange } from "../../@redux/actions"; +import { useSerieEntities } from "../../@redux/hooks"; +import { useReduxAction } from "../../@redux/hooks/base"; +import { SeriesApi } from "../../apis"; +import { ActionBadge } from "../../components"; +import { BuildKey } from "../../utilites"; import BaseItemView from "../generic/BaseItemView"; -import { BuildKey } from "../utilites"; interface Props {} diff --git a/frontend/src/generic/BaseItemView/index.tsx b/frontend/src/DisplayItem/generic/BaseItemView/index.tsx similarity index 94% rename from frontend/src/generic/BaseItemView/index.tsx rename to frontend/src/DisplayItem/generic/BaseItemView/index.tsx index cc060d4a8..4925089a6 100644 --- a/frontend/src/generic/BaseItemView/index.tsx +++ b/frontend/src/DisplayItem/generic/BaseItemView/index.tsx @@ -5,11 +5,11 @@ import React, { useCallback, useMemo, useState } from "react"; import { Container, Dropdown, Row } from "react-bootstrap"; import { Helmet } from "react-helmet"; import { Column } from "react-table"; -import { useIsAnyTaskRunning } from "../../@modules/task/hooks"; -import { useLanguageProfiles } from "../../@redux/hooks"; -import { useAppDispatch } from "../../@redux/hooks/base"; -import { ContentHeader } from "../../components"; -import { GetItemId, isNonNullable } from "../../utilites"; +import { useIsAnyTaskRunning } from "../../../@modules/task/hooks"; +import { useLanguageProfiles } from "../../../@redux/hooks"; +import { useAppDispatch } from "../../../@redux/hooks/base"; +import { ContentHeader } from "../../../components"; +import { GetItemId, isNonNullable } from "../../../utilites"; import Table from "./table"; export interface SharedProps { diff --git a/frontend/src/generic/BaseItemView/table.tsx b/frontend/src/DisplayItem/generic/BaseItemView/table.tsx similarity index 85% rename from frontend/src/generic/BaseItemView/table.tsx rename to frontend/src/DisplayItem/generic/BaseItemView/table.tsx index 708515bdc..72c9f234b 100644 --- a/frontend/src/generic/BaseItemView/table.tsx +++ b/frontend/src/DisplayItem/generic/BaseItemView/table.tsx @@ -2,16 +2,16 @@ import { uniqBy } from "lodash"; import React, { useCallback, useMemo } from "react"; import { TableOptions, TableUpdater, useRowSelect } from "react-table"; import { SharedProps } from "."; -import { useLanguageProfiles } from "../../@redux/hooks"; +import { useLanguageProfiles } from "../../../@redux/hooks"; import { AsyncPageTable, ItemEditorModal, SimpleTable, useShowModal, -} from "../../components"; -import { TableStyleProps } from "../../components/tables/BaseTable"; -import { useCustomSelection } from "../../components/tables/plugins"; -import { GetItemId, useEntityToList } from "../../utilites"; +} from "../../../components"; +import { TableStyleProps } from "../../../components/tables/BaseTable"; +import { useCustomSelection } from "../../../components/tables/plugins"; +import { GetItemId, useEntityToList } from "../../../utilites"; interface Props extends SharedProps { dirtyItems: readonly T[]; diff --git a/frontend/src/generic/ItemOverview.tsx b/frontend/src/DisplayItem/generic/ItemOverview.tsx similarity index 96% rename from frontend/src/generic/ItemOverview.tsx rename to frontend/src/DisplayItem/generic/ItemOverview.tsx index 17d779c28..17c9db188 100644 --- a/frontend/src/generic/ItemOverview.tsx +++ b/frontend/src/DisplayItem/generic/ItemOverview.tsx @@ -22,9 +22,9 @@ import { Popover, Row, } from "react-bootstrap"; -import { useProfileBy, useProfileItemsToLanguages } from "../@redux/hooks"; -import { LanguageText } from "../components"; -import { BuildKey, isMovie } from "../utilites"; +import { useProfileBy, useProfileItemsToLanguages } from "../../@redux/hooks"; +import { LanguageText } from "../../components"; +import { BuildKey, isMovie } from "../../utilites"; interface Props { item: Item.Base; diff --git a/frontend/src/generic/blacklist.tsx b/frontend/src/DisplayItem/generic/blacklist.tsx similarity index 95% rename from frontend/src/generic/blacklist.tsx rename to frontend/src/DisplayItem/generic/blacklist.tsx index df33e3efe..6d39f55ae 100644 --- a/frontend/src/generic/blacklist.tsx +++ b/frontend/src/DisplayItem/generic/blacklist.tsx @@ -1,7 +1,7 @@ import { faFileExcel } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import React, { FunctionComponent } from "react"; -import { AsyncButton } from "../components"; +import { AsyncButton } from "../../components"; interface Props { history: History.Base; diff --git a/frontend/src/History/Movies/index.tsx b/frontend/src/History/Movies/index.tsx index 9a387ecae..6523e5f1c 100644 --- a/frontend/src/History/Movies/index.tsx +++ b/frontend/src/History/Movies/index.tsx @@ -9,7 +9,7 @@ import { useMoviesHistory } from "../../@redux/hooks"; import { useReduxAction } from "../../@redux/hooks/base"; import { MoviesApi } from "../../apis"; import { HistoryIcon, LanguageText, TextPopover } from "../../components"; -import { BlacklistButton } from "../../generic/blacklist"; +import { BlacklistButton } from "../../DisplayItem/generic/blacklist"; import HistoryGenericView from "../generic"; interface Props {} diff --git a/frontend/src/History/Series/index.tsx b/frontend/src/History/Series/index.tsx index e96c3e689..ab051fc2b 100644 --- a/frontend/src/History/Series/index.tsx +++ b/frontend/src/History/Series/index.tsx @@ -9,7 +9,7 @@ import { useSeriesHistory } from "../../@redux/hooks"; import { useReduxAction } from "../../@redux/hooks/base"; import { EpisodesApi } from "../../apis"; import { HistoryIcon, LanguageText, TextPopover } from "../../components"; -import { BlacklistButton } from "../../generic/blacklist"; +import { BlacklistButton } from "../../DisplayItem/generic/blacklist"; import HistoryGenericView from "../generic"; interface Props {} diff --git a/frontend/src/Movies/Router.tsx b/frontend/src/Movies/Router.tsx deleted file mode 100644 index 7ef168ea3..000000000 --- a/frontend/src/Movies/Router.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React, { FunctionComponent } from "react"; -import { Route, Switch } from "react-router-dom"; -import Movie from "."; -import MovieDetail from "./Detail"; - -interface Props {} - -const Router: FunctionComponent = () => { - return ( - - - - - - - - - ); -}; - -export default Router; diff --git a/frontend/src/Series/Router.tsx b/frontend/src/Series/Router.tsx deleted file mode 100644 index bde7b89f7..000000000 --- a/frontend/src/Series/Router.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React, { FunctionComponent } from "react"; -import { Route, Switch } from "react-router-dom"; -import Series from "."; -import Episodes from "./Episodes"; - -interface Props {} - -const Router: FunctionComponent = () => { - return ( - - - - - - - - - ); -}; - -export default Router; diff --git a/frontend/src/components/modals/HistoryModal.tsx b/frontend/src/components/modals/HistoryModal.tsx index 9e19d8295..04a35b980 100644 --- a/frontend/src/components/modals/HistoryModal.tsx +++ b/frontend/src/components/modals/HistoryModal.tsx @@ -3,7 +3,7 @@ import { Column } from "react-table"; import { useDidUpdate } from "rooks"; import { HistoryIcon, LanguageText, PageTable, TextPopover } from ".."; import { EpisodesApi, MoviesApi, useAsyncRequest } from "../../apis"; -import { BlacklistButton } from "../../generic/blacklist"; +import { BlacklistButton } from "../../DisplayItem/generic/blacklist"; import { AsyncOverlay } from "../async"; import BaseModal, { BaseModalProps } from "./BaseModal"; import { useModalPayload } from "./hooks"; diff --git a/frontend/src/components/modals/ItemEditorModal.tsx b/frontend/src/components/modals/ItemEditorModal.tsx index fddfac439..f178cf138 100644 --- a/frontend/src/components/modals/ItemEditorModal.tsx +++ b/frontend/src/components/modals/ItemEditorModal.tsx @@ -22,9 +22,7 @@ const Editor: FunctionComponent = (props) => { ); // TODO: Separate movies and series - const hasTask = useIsAnyTaskRunningWithId([ - payload ? GetItemId(payload) : -1, - ]); + const hasTask = useIsAnyTaskRunningWithId([GetItemId(payload ?? {})]); const profileOptions = useMemo[]>( () =>