From 26499533d32554cdbd9049a54a72a47304f2b110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Delattre?= Date: Thu, 4 Jul 2019 17:26:56 +0200 Subject: [PATCH] Refactor the code in reusable components and libs --- frontend/js/actions/subtitles.js | 46 +-- frontend/js/app.js | 2 +- frontend/js/components/buttons/actions.js | 70 ---- frontend/js/components/buttons/download.js | 10 +- frontend/js/components/buttons/polochon.js | 29 -- frontend/js/components/buttons/refresh.js | 23 -- frontend/js/components/buttons/showMore.js | 38 ++ frontend/js/components/buttons/subtitles.js | 108 +++--- frontend/js/components/buttons/torrents.js | 117 ++++++ frontend/js/components/details/genres.js | 21 + frontend/js/components/details/plot.js | 12 + frontend/js/components/details/polochon.js | 38 ++ frontend/js/components/details/rating.js | 24 ++ frontend/js/components/details/releaseDate.js | 47 +++ frontend/js/components/details/runtime.js | 17 + frontend/js/components/details/title.js | 25 ++ frontend/js/components/list/details.js | 104 +---- frontend/js/components/list/filter.js | 8 +- frontend/js/components/list/poster.js | 15 +- frontend/js/components/list/posters.js | 4 +- frontend/js/components/movies/actions.js | 47 --- frontend/js/components/movies/buttons.js | 54 --- frontend/js/components/movies/list.js | 60 ++- .../js/components/movies/subtitlesButton.js | 33 ++ frontend/js/components/movies/torrents.js | 92 ----- .../js/components/movies/torrentsButton.js | 31 ++ frontend/js/components/shows/details.js | 363 +----------------- .../js/components/shows/details/episode.js | 71 ++++ .../components/shows/details/episodeThumb.js | 13 + .../js/components/shows/details/fanart.js | 14 + .../js/components/shows/details/header.js | 51 +++ .../js/components/shows/details/season.js | 48 +++ .../js/components/shows/details/seasons.js | 31 ++ .../shows/details/subtitlesButton.js | 37 ++ .../shows/details/torrentsButton.js | 38 ++ frontend/js/components/shows/details/track.js | 82 ++++ frontend/js/components/shows/list.js | 15 +- frontend/js/components/shows/listButtons.js | 62 --- frontend/js/utils.js | 19 + frontend/scss/app.scss | 29 +- 40 files changed, 978 insertions(+), 970 deletions(-) delete mode 100644 frontend/js/components/buttons/actions.js delete mode 100644 frontend/js/components/buttons/polochon.js delete mode 100644 frontend/js/components/buttons/refresh.js create mode 100644 frontend/js/components/buttons/showMore.js create mode 100644 frontend/js/components/buttons/torrents.js create mode 100644 frontend/js/components/details/genres.js create mode 100644 frontend/js/components/details/plot.js create mode 100644 frontend/js/components/details/polochon.js create mode 100644 frontend/js/components/details/rating.js create mode 100644 frontend/js/components/details/releaseDate.js create mode 100644 frontend/js/components/details/runtime.js create mode 100644 frontend/js/components/details/title.js delete mode 100644 frontend/js/components/movies/actions.js delete mode 100644 frontend/js/components/movies/buttons.js create mode 100644 frontend/js/components/movies/subtitlesButton.js delete mode 100644 frontend/js/components/movies/torrents.js create mode 100644 frontend/js/components/movies/torrentsButton.js create mode 100644 frontend/js/components/shows/details/episode.js create mode 100644 frontend/js/components/shows/details/episodeThumb.js create mode 100644 frontend/js/components/shows/details/fanart.js create mode 100644 frontend/js/components/shows/details/header.js create mode 100644 frontend/js/components/shows/details/season.js create mode 100644 frontend/js/components/shows/details/seasons.js create mode 100644 frontend/js/components/shows/details/subtitlesButton.js create mode 100644 frontend/js/components/shows/details/torrentsButton.js create mode 100644 frontend/js/components/shows/details/track.js delete mode 100644 frontend/js/components/shows/listButtons.js create mode 100644 frontend/js/utils.js diff --git a/frontend/js/actions/subtitles.js b/frontend/js/actions/subtitles.js index b5aa249..404e42c 100644 --- a/frontend/js/actions/subtitles.js +++ b/frontend/js/actions/subtitles.js @@ -1,28 +1,24 @@ import { configureAxios, request } from "../requests" -export function refreshSubtitles(type, id, season, episode) { - switch (type) { - case "movie": - var resourceURL = `/movies/${id}` - return request( - "MOVIE_SUBTITLES_UPDATE", - configureAxios().post(`${resourceURL}/subtitles/refresh`), - null, - { imdbId: id }, - ) - case "episode": - var resourceURL = `/shows/${id}/seasons/${season}/episodes/${episode}` - return request( - "EPISODE_SUBTITLES_UPDATE", - configureAxios().post(`${resourceURL}/subtitles/refresh`), - null, - { - imdbId: id, - season: season, - episode: episode, - }, - ) - default: - console.warn("refreshSubtitles - Unknown type " + type) - } +export const searchMovieSubtitles = (imdbId) => { + return request( + "MOVIE_SUBTITLES_UPDATE", + configureAxios().post(`/movies/${imdbId}/subtitles/refresh`), + null, + { imdbId: imdbId }, + ) +} + +export const searchEpisodeSubtitles = (imdbId, season, episode) => { + const url = `/shows/${imdbId}/seasons/${season}/episodes/${episode}`; + return request( + "EPISODE_SUBTITLES_UPDATE", + configureAxios().post(`${url}/subtitles/refresh`), + null, + { + imdbId: imdbId, + season: season, + episode: episode, + }, + ); } diff --git a/frontend/js/app.js b/frontend/js/app.js index 13ed328..b892f35 100644 --- a/frontend/js/app.js +++ b/frontend/js/app.js @@ -31,7 +31,7 @@ import MovieList from "./components/movies/list" import MoviesRoute from "./components/movies/route" import NavBar from "./components/navbar" import WsHandler from "./components/websocket" -import ShowDetails from "./components/shows/details" +import { ShowDetails } from "./components/shows/details" import ShowList from "./components/shows/list" import ShowsRoute from "./components/shows/route" import TorrentList from "./components/torrents/list" diff --git a/frontend/js/components/buttons/actions.js b/frontend/js/components/buttons/actions.js deleted file mode 100644 index 2cb5d33..0000000 --- a/frontend/js/components/buttons/actions.js +++ /dev/null @@ -1,70 +0,0 @@ -import React from "react" -import PropTypes from "prop-types" - -import Dropdown from "react-bootstrap/Dropdown" - -import RefreshIndicator from "./refresh" - -export const WishlistButton = (props) => { - const handleClick = (e) => { - e.preventDefault(); - if (props.wishlisted) { - props.deleteFromWishlist(props.resourceId); - } else { - props.addToWishlist(props.resourceId); - } - } - - if (props.wishlisted) { - return ( - - - Delete from wishlist - - - ); - } else { - return ( - - - Add to wishlist - - - ); - } -} - -export const DeleteButton = (props) => { - const handleClick = () => { - props.deleteFunc(props.resourceId, props.lastFetchUrl); - } - return ( - - - Delete - - - ); -} -DeleteButton.propTypes = { - resourceId: PropTypes.string.isRequired, - lastFetchUrl: PropTypes.string, - deleteFunc: PropTypes.func.isRequired, -}; - -export const RefreshButton = (props) => { - const handleClick = () => { - if (props.fetching) { return; } - props.getDetails(props.resourceId); - } - return ( - - - - ); -} -RefreshButton.propTypes = { - fetching: PropTypes.bool.isRequired, - resourceId: PropTypes.string.isRequired, - getDetails: PropTypes.func.isRequired, -}; diff --git a/frontend/js/components/buttons/download.js b/frontend/js/components/buttons/download.js index 1b044b7..5012cbe 100644 --- a/frontend/js/components/buttons/download.js +++ b/frontend/js/components/buttons/download.js @@ -8,10 +8,10 @@ export const DownloadAndStream = ({ url, name, subtitles }) => { if (!url || url === "") { return null; } return ( - + - + ); } DownloadAndStream.propTypes = { @@ -58,9 +58,8 @@ StreamButton.propTypes = { subtitles: PropTypes.instanceOf(List), }; - const Player = ({ url, subtitles }) => { - const hasSubtitles = !(subtitles === undefined || subtitles === null || subtitles.size === 0); + const hasSubtitles = !(subtitles === null || subtitles.size === 0); return (