- {name} |
+ {module.name} |
@@ -121,5 +110,5 @@ const Module = (props) => {
);
};
Module.propTypes = {
- data: PropTypes.instanceOf(Map),
+ module: PropTypes.object.isRequired,
};
diff --git a/frontend/js/components/movies/list.js b/frontend/js/components/movies/list.js
index 70b20f5..ad4c619 100644
--- a/frontend/js/components/movies/list.js
+++ b/frontend/js/components/movies/list.js
@@ -1,11 +1,9 @@
import React, { useEffect, useCallback } from "react";
import PropTypes from "prop-types";
import { useSelector, useDispatch } from "react-redux";
-import { Map } from "immutable";
import {
selectMovie,
- updateFilter,
movieWishlistToggle,
fetchMovies,
getMovieExploreOptions,
@@ -14,8 +12,6 @@ import {
import ListDetails from "../list/details";
import ListPosters from "../list/posters";
-import { inLibrary, isWishlisted } from "../../utils";
-
import { ShowMore } from "../buttons/showMore";
import { MovieSubtitlesButton } from "./subtitlesButton";
@@ -51,25 +47,17 @@ const MovieList = ({ match }) => {
}
}, [dispatch, match]);
- const loading = useSelector((state) => state.movieStore.get("loading"));
- const movies = useSelector((state) => state.movieStore.get("movies"));
- const filter = useSelector((state) => state.movieStore.get("filter"));
- const selectedImdbId = useSelector((state) =>
- state.movieStore.get("selectedImdbId")
- );
- const exploreOptions = useSelector((state) =>
- state.movieStore.get("exploreOptions")
- );
+ const loading = useSelector((state) => state.movies.loading);
+ const movies = useSelector((state) => state.movies.movies);
+ const selectedImdbId = useSelector((state) => state.movies.selectedImdbId);
+ const exploreOptions = useSelector((state) => state.movies.exploreOptions);
- let selectedMovie = Map();
+ let selectedMovie = {};
if (movies !== undefined && movies.has(selectedImdbId)) {
selectedMovie = movies.get(selectedImdbId);
}
const selectFunc = useCallback((id) => dispatch(selectMovie(id)), [dispatch]);
- const filterFunc = useCallback((filter) => dispatch(updateFilter(filter)), [
- dispatch,
- ]);
const exploreFetchOptions = useCallback(
() => dispatch(getMovieExploreOptions()),
[dispatch]
@@ -84,8 +72,6 @@ const MovieList = ({ match }) => {
exploreFetchOptions={exploreFetchOptions}
exploreOptions={exploreOptions}
selectedImdbId={selectedImdbId}
- updateFilter={filterFunc}
- filter={filter}
onClick={selectFunc}
onDoubleClick={() => {}}
onKeyEnter={() => {}}
@@ -95,31 +81,19 @@ const MovieList = ({ match }) => {
dispatch(
- movieWishlistToggle(
- selectedMovie.get("imdb_id"),
- isWishlisted(selectedMovie)
- )
+ movieWishlistToggle(selectedMovie.imdb_id, selectedMovie.wishlisted)
)
}
>
-
-
+
+
diff --git a/frontend/js/components/movies/subtitlesButton.js b/frontend/js/components/movies/subtitlesButton.js
index 2f1bd89..f931078 100644
--- a/frontend/js/components/movies/subtitlesButton.js
+++ b/frontend/js/components/movies/subtitlesButton.js
@@ -1,20 +1,24 @@
import React from "react";
-import PropTypes from "prop-types";
-import { List } from "immutable";
-import { useDispatch } from "react-redux";
+import { useDispatch, useSelector } from "react-redux";
import { searchMovieSubtitles } from "../../actions/subtitles";
import { SubtitlesButton } from "../buttons/subtitles";
-export const MovieSubtitlesButton = ({
- inLibrary,
- imdbId,
- searching,
- subtitles,
-}) => {
+export const MovieSubtitlesButton = () => {
const dispatch = useDispatch();
+ const imdbId = useSelector((state) => state.movies.selectedImdbId);
+ const inLibrary = useSelector(
+ (state) => state.movies.movies.get(imdbId).polochon_url !== ""
+ );
+ const subtitles = useSelector(
+ (state) => state.movies.movies.get(imdbId).subtitles
+ );
+ const searching = useSelector(
+ (state) => state.movies.movies.get(imdbId).fetchingSubtitles
+ );
+
return (
);
};
-MovieSubtitlesButton.propTypes = {
- searching: PropTypes.bool,
- inLibrary: PropTypes.bool,
- imdbId: PropTypes.string,
- subtitles: PropTypes.instanceOf(List),
-};
diff --git a/frontend/js/components/movies/torrentsButton.js b/frontend/js/components/movies/torrentsButton.js
index 5905ae0..dc9e6e1 100644
--- a/frontend/js/components/movies/torrentsButton.js
+++ b/frontend/js/components/movies/torrentsButton.js
@@ -1,13 +1,22 @@
import React from "react";
-import PropTypes from "prop-types";
-import { List } from "immutable";
-import { useDispatch } from "react-redux";
+import { useDispatch, useSelector } from "react-redux";
import { getMovieDetails } from "../../actions/movies";
+
import { TorrentsButton } from "../buttons/torrents";
-export const MovieTorrentsButton = ({ torrents, imdbId, title, searching }) => {
+export const MovieTorrentsButton = () => {
const dispatch = useDispatch();
+
+ const imdbId = useSelector((state) => state.movies.selectedImdbId);
+ const title = useSelector((state) => state.movies.movies.get(imdbId).title);
+ const torrents = useSelector(
+ (state) => state.movies.movies.get(imdbId).torrents
+ );
+ const searching = useSelector(
+ (state) => state.movies.movies.get(imdbId).fetchingDetails
+ );
+
return (
{
/>
);
};
-MovieTorrentsButton.propTypes = {
- torrents: PropTypes.instanceOf(List),
- imdbId: PropTypes.string,
- title: PropTypes.string,
- searching: PropTypes.bool,
- getMovieDetails: PropTypes.func,
-};
diff --git a/frontend/js/components/navbar.js b/frontend/js/components/navbar.js
index 6575f6b..c0f0e5d 100644
--- a/frontend/js/components/navbar.js
+++ b/frontend/js/components/navbar.js
@@ -8,14 +8,11 @@ import Nav from "react-bootstrap/Nav";
import Navbar from "react-bootstrap/Navbar";
import NavDropdown from "react-bootstrap/NavDropdown";
-const AppNavBar = () => {
+export const AppNavBar = () => {
const [expanded, setExpanded] = useState(false);
- const username = useSelector((state) => state.userStore.get("username"));
- const isAdmin = useSelector((state) => state.userStore.get("isAdmin"));
- const torrentCount = useSelector(
- (state) => state.torrentStore.get("torrents").size
- );
+ const username = useSelector((state) => state.user.username);
+ const isAdmin = useSelector((state) => state.user.isAdmin);
return (
{
-
+
|