From 80db4383a3cd4692c7a125a8d45ed630ed498863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Delattre?= Date: Fri, 2 Jun 2017 13:49:31 +0200 Subject: [PATCH] Update the movie store to be immutable --- src/public/js/actions/movies.js | 21 ++- src/public/js/actions/subtitles.js | 6 +- src/public/js/app.js | 2 +- src/public/js/components/buttons/download.js | 10 +- src/public/js/components/buttons/subtitles.js | 23 ++-- src/public/js/components/list/details.js | 39 +++--- .../js/components/list/explorerOptions.js | 11 +- src/public/js/components/list/filter.js | 58 ++++---- src/public/js/components/list/poster.js | 57 ++++---- src/public/js/components/list/posters.js | 111 ++++++++-------- src/public/js/components/movies/list.js | 73 +++++----- src/public/js/components/movies/torrents.js | 20 +-- src/public/js/reducers/movies.js | 125 +++++++----------- src/public/js/requests.js | 3 +- src/public/js/routes.js | 2 +- 15 files changed, 277 insertions(+), 284 deletions(-) diff --git a/src/public/js/actions/movies.js b/src/public/js/actions/movies.js index e5e0d36..8829e02 100644 --- a/src/public/js/actions/movies.js +++ b/src/public/js/actions/movies.js @@ -14,7 +14,18 @@ export function updateLastMovieFetchUrl(url) { export function selectMovie(imdbId) { return { type: 'SELECT_MOVIE', - imdbId + payload: { + imdbId, + }, + } +} + +export function updateFilter(filter) { + return { + type: 'MOVIE_UPDATE_FILTER', + payload: { + filter, + }, } } @@ -28,7 +39,11 @@ export function getMovieExploreOptions() { export function getMovieDetails(imdbId) { return request( 'MOVIE_GET_DETAILS', - configureAxios().post(`/movies/${imdbId}/refresh`) + configureAxios().post(`/movies/${imdbId}/refresh`), + null, + { + imdbId, + } ) } @@ -48,7 +63,6 @@ export function addMovieToWishlist(imdbId) { 'MOVIE_ADD_TO_WISHLIST', configureAxios().post(`/wishlist/movies/${imdbId}`), [ - addAlertOk("Movie added to the wishlist"), updateMovieWishlistStore(imdbId, true), ], ) @@ -59,7 +73,6 @@ export function deleteMovieFromWishlist(imdbId) { 'MOVIE_DELETE_FROM_WISHLIST', configureAxios().delete(`/wishlist/movies/${imdbId}`), [ - addAlertOk("Movie deleted from the wishlist"), updateMovieWishlistStore(imdbId, false), ], ) diff --git a/src/public/js/actions/subtitles.js b/src/public/js/actions/subtitles.js index 0f950f9..d12d9d5 100644 --- a/src/public/js/actions/subtitles.js +++ b/src/public/js/actions/subtitles.js @@ -10,7 +10,7 @@ export function refreshSubtitles(type, id, season, episode) { 'MOVIE_SUBTITLES_UPDATE', configureAxios().post(`${resourceURL}/subtitles/refresh`), null, - { imdb_id: id }, + { imdbId: id }, ) case 'episode': var resourceURL = `/shows/${id}/seasons/${season}/episodes/${episode}` @@ -19,12 +19,12 @@ export function refreshSubtitles(type, id, season, episode) { configureAxios().post(`${resourceURL}/subtitles/refresh`), null, { - imdb_id: id, + imdbId: id, season: season, episode: episode, }, ) default: - console.log("refreshSubtitles - Unknown type " + type) + console.warn("refreshSubtitles - Unknown type " + type) } } diff --git a/src/public/js/app.js b/src/public/js/app.js index 8db0d3b..9dc472e 100644 --- a/src/public/js/app.js +++ b/src/public/js/app.js @@ -42,7 +42,7 @@ import getRoutes from './routes' function mapStateToProps(state) { let torrentCount = 0; - if (state.torrentStore.has('torrents')) { + if (state.torrentStore.has('torrents') && state.torrentStore.get('torrents') !== undefined) { torrentCount = state.torrentStore.get('torrents').size; } return { diff --git a/src/public/js/components/buttons/download.js b/src/public/js/components/buttons/download.js index 8c18ece..5f7a58b 100644 --- a/src/public/js/components/buttons/download.js +++ b/src/public/js/components/buttons/download.js @@ -1,4 +1,5 @@ import React from 'react' +import { toJS } from 'immutable' import { Button, Dropdown, MenuItem, Modal } from 'react-bootstrap' @@ -69,20 +70,13 @@ export default class DownloadButton extends React.Component { class Player extends React.Component { constructor(props) { super(props); - var subtitles = []; - if (props.subtitles && props.subtitles.length) { - subtitles = props.subtitles; - } - this.state = { - subtitles: subtitles, - }; } render() { return (