Memoize track ordering

This commit is contained in:
Jordan Eldredge 2017-10-23 17:59:39 -07:00
parent d2eb18fb1f
commit 3045733c63
4 changed files with 20 additions and 5 deletions

View file

@ -18,6 +18,7 @@ import {
SET_FOCUSED_WINDOW,
SET_PLAYLIST_SCROLL_POSITION
} from "../../actionTypes";
import { getOrderedTracks } from "../../selectors";
import { play, pause, stop, openFileDialog } from "../../actionCreators";
import "../../../css/playlist-window.css";
@ -148,15 +149,14 @@ const mapDispatchToProps = (dispatch, ownProps) => ({
const mapStateToProps = state => {
const {
windows: { focused },
display: { skinPlaylistStyle, playlistScrollPosition, playlistSize },
playlist: { trackOrder }
display: { skinPlaylistStyle, playlistScrollPosition, playlistSize }
} = state;
return {
focused,
skinPlaylistStyle,
playlistScrollPosition,
playlistSize,
trackOrder: trackOrder.filter(id => state.tracks[id])
trackOrder: getOrderedTracks(state)
};
};

View file

@ -1,5 +1,6 @@
import { denormalize } from "./utils";
import { BANDS } from "./constants";
import { createSelector } from "reselect";
export const getEqfData = state => {
// state.equalizer.sliders
@ -17,3 +18,12 @@ export const getEqfData = state => {
};
return eqfData;
};
const getTracks = state => state.tracks;
const getTrackOrder = state => state.playlist.trackOrder;
export const getOrderedTracks = createSelector(
getTracks,
getTrackOrder,
(tracks, trackOrder) => trackOrder.filter(id => tracks[id])
);

View file

@ -15,9 +15,9 @@
"tdd": "jest --watch",
"deploy": "ssh jordaneldredge.com HASH=$HASH sh < scripts/deploy.sh",
"revert": "ssh jordaneldredge.com sh < scripts/revert.sh",
"format":
"format":
"prettier --write js/**/*.js css/**/*.css webpack.config.js webpack.production.config.js",
"build-skin":
"build-skin":
"rm skins/base-2.91.wsz && cd skins/base-2.91 && zip -x .* -x 'Skining Updates.txt' -r ../base-2.91.wsz .",
"skin-info": "unzip -vl skins/base-2.91.wsz"
},
@ -73,6 +73,7 @@
"redux": "^3.5.2",
"redux-devtools-extension": "^2.13.2",
"redux-thunk": "^2.1.0",
"reselect": "^3.0.1",
"webpack": "^3.6.0",
"winamp-eqf": "^1.0.0"
},

View file

@ -5125,6 +5125,10 @@ requires-port@1.0.x, requires-port@1.x.x:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
reselect@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147"
resolve-from@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"