New: Many UI Updates and Performance Tweaks

This commit is contained in:
Qstick
2019-04-12 23:25:58 -04:00
parent b24a40797f
commit 6275737ced
389 changed files with 7961 additions and 5635 deletions

View File

@@ -0,0 +1,9 @@
import { createSelectorCreator, defaultMemoize } from 'reselect';
import _ from 'lodash';
const createDeepEqualSelector = createSelectorCreator(
defaultMemoize,
_.isEqual
);
export default createDeepEqualSelector;

View File

@@ -0,0 +1,13 @@
import { createSelector } from 'reselect';
import { isCommandExecuting } from 'Utilities/Command';
function createExecutingCommandsSelector() {
return createSelector(
(state) => state.commands.items,
(commands) => {
return commands.filter((command) => isCommandExecuting(command));
}
);
}
export default createExecutingCommandsSelector;

View File

@@ -0,0 +1,36 @@
import { createSelector } from 'reselect';
import createDeepEqualSelector from './createDeepEqualSelector';
import createClientSideCollectionSelector from './createClientSideCollectionSelector';
function createUnoptimizedSelector(uiSection) {
return createSelector(
createClientSideCollectionSelector('movies', uiSection),
(movies) => {
const items = movies.items.map((s) => {
const {
id,
sortTitle
} = s;
return {
id,
sortTitle
};
});
return {
...movies,
items
};
}
);
}
function createMovieClientSideCollectionItemsSelector(uiSection) {
return createDeepEqualSelector(
createUnoptimizedSelector(uiSection),
(movies) => movies
);
}
export default createMovieClientSideCollectionItemsSelector;

View File

@@ -0,0 +1,16 @@
import { createSelector } from 'reselect';
import createMovieSelector from './createMovieSelector';
function createMovieQualityProfileSelector() {
return createSelector(
(state) => state.settings.qualityProfiles.items,
createMovieSelector(),
(qualityProfiles, movie) => {
return qualityProfiles.find((profile) => {
return profile.id === movie.qualityProfileId;
});
}
);
}
export default createMovieQualityProfileSelector;

View File

@@ -1,4 +1,3 @@
import _ from 'lodash';
import { createSelector } from 'reselect';
import createAllMoviesSelector from './createAllMoviesSelector';
@@ -6,8 +5,8 @@ function createMovieSelector() {
return createSelector(
(state, { movieId }) => movieId,
createAllMoviesSelector(),
(movieId, movies) => {
return _.find(movies, { id: movieId });
(movieId, allMovies) => {
return allMovies.find((movie) => movie.id === movieId);
}
);
}

View File

@@ -1,4 +1,3 @@
import _ from 'lodash';
import { createSelector } from 'reselect';
function createQualityProfileSelector() {
@@ -6,7 +5,9 @@ function createQualityProfileSelector() {
(state, { qualityProfileId }) => qualityProfileId,
(state) => state.settings.qualityProfiles.items,
(qualityProfileId, qualityProfiles) => {
return _.find(qualityProfiles, { id: qualityProfileId });
return qualityProfiles.find((profile) => {
return profile.id === qualityProfileId;
});
}
);
}