From b3dc8f896c2a7723873490fd21056879cc674c86 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Sun, 4 Sep 2022 09:30:15 +1200 Subject: [PATCH] Upgrading to dispatch --- src/js/views/Discover/PlaylistGroup.js | 85 ++++++++------------------ 1 file changed, 26 insertions(+), 59 deletions(-) diff --git a/src/js/views/Discover/PlaylistGroup.js b/src/js/views/Discover/PlaylistGroup.js index 506db600..bdb597ff 100644 --- a/src/js/views/Discover/PlaylistGroup.js +++ b/src/js/views/Discover/PlaylistGroup.js @@ -1,6 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; +import { useDispatch, useSelector } from 'react-redux'; import { useParams } from 'react-router-dom'; import Header from '../../components/Header'; import DropdownField from '../../components/Fields/DropdownField'; @@ -10,9 +9,12 @@ import { Grid } from '../../components/Grid'; import Loader from '../../components/Loader'; import ErrorMessage from '../../components/ErrorMessage'; import Button from '../../components/Button'; -import * as uiActions from '../../services/ui/actions'; -import * as coreActions from '../../services/core/actions'; -import * as spotifyActions from '../../services/spotify/actions'; +import { + setSort, + hideContextMenu, + setWindowTitle, +} from '../../services/ui/actions'; +import { loadPlaylistGroup } from '../../services/core/actions'; import { I18n, i18n } from '../../locale'; import { makeItemSelector, @@ -24,42 +26,35 @@ import { decodeUri } from '../../util/format'; const SORT_KEY = 'playlist_group'; -const PlaylistGroup = ({ - uri, - playlistGroup, - playlists: playlistsProp, - loading, - sortField, - sortReverse, - coreActions: { - loadPlaylistGroup, - }, - uiActions: { - setSort, - hideContextMenu, - setWindowTitle, - }, -}) => { +const PlaylistGroup = () => { + const dispatch = useDispatch(); + const { uri: unencodedUri } = useParams(); + const uri = decodeUri(unencodedUri); + const [sortField, sortReverse] = useSelector((state) => getSortSelector(state, SORT_KEY, null)); + const loading = useSelector(makeLoadingSelector([`playlist_group_${uri}`])); + const playlistGroup = useSelector(makeItemSelector(uri)); + const playlistsProp = useSelector(makeItemSelector(playlistGroup?.playlists_uris || [])); + const [filter, setFilter] = useState(''); const { name } = useParams(); useEffect(() => { if (playlistGroup) { - setWindowTitle(playlistGroup.name); + dispatch(setWindowTitle(playlistGroup.name)); } else { - setWindowTitle(i18n('discover.category.title')); + dispatch(setWindowTitle(i18n('discover.category.title'))); } }, [playlistGroup]); useEffect( () => { - if (uri) loadPlaylistGroup(uri); + if (uri) dispatch(loadPlaylistGroup(uri)); }, [uri], ); const refresh = () => { - hideContextMenu(); - loadPlaylistGroup(uri, { forceRefetch: true }); + dispatch(hideContextMenu()); + dispatch(loadPlaylistGroup(uri, { forceRefetch: true })); } const onSortChange = (field) => { @@ -68,8 +63,8 @@ const PlaylistGroup = ({ reverse = !sortReverse; } - setSort(SORT_KEY, field, reverse); - hideContextMenu(); + dispatch(setSort(SORT_KEY, field, reverse)); + dispatch(hideContextMenu()); } if (loading) { @@ -110,7 +105,7 @@ const PlaylistGroup = ({ uiActions.hideContextMenu()} + onSubmit={() => dispatch(hideContextMenu())} /> -
+
{playlistGroup.name || name}
@@ -158,32 +153,4 @@ const PlaylistGroup = ({ ); } -const mapStateToProps = (state, ownProps) => { - const [sortField, sortReverse] = getSortSelector(state, SORT_KEY, null); - const uri = decodeUri(ownProps.match.params.uri); - const loadingSelector = makeLoadingSelector([`playlist_group_${uri}`]); - const playlistGroupSelector = makeItemSelector(uri); - const playlistGroup = playlistGroupSelector(state); - let playlists = null; - if (playlistGroup && playlistGroup.playlists_uris) { - const playlistsSelector = makeItemSelector(playlistGroup.playlists_uris); - playlists = playlistsSelector(state); - } - - return { - uri, - loading: loadingSelector(state), - playlistGroup, - playlists, - sortField, - sortReverse, - }; -}; - -const mapDispatchToProps = (dispatch) => ({ - uiActions: bindActionCreators(uiActions, dispatch), - coreActions: bindActionCreators(coreActions, dispatch), - spotifyActions: bindActionCreators(spotifyActions, dispatch), -}); - -export default connect(mapStateToProps, mapDispatchToProps)(PlaylistGroup); +export default PlaylistGroup;