Indexer and Search page work

This commit is contained in:
Qstick
2020-10-20 02:08:45 -04:00
parent 5c39ef2f76
commit f290afa68c
123 changed files with 3012 additions and 3274 deletions

View File

@@ -4,22 +4,22 @@ import createClientSideCollectionSelector from './createClientSideCollectionSele
function createUnoptimizedSelector(uiSection) {
return createSelector(
createClientSideCollectionSelector('movies', uiSection),
(movies) => {
const items = movies.items.map((s) => {
createClientSideCollectionSelector('indexers', uiSection),
(indexers) => {
const items = indexers.items.map((s) => {
const {
id,
sortTitle
name
} = s;
return {
id,
sortTitle
sortTitle: name
};
});
return {
...movies,
...indexers,
items
};
}
@@ -35,11 +35,11 @@ const createMovieEqualSelector = createSelectorCreator(
movieListEqual
);
function createMovieClientSideCollectionItemsSelector(uiSection) {
function createIndexerClientSideCollectionItemsSelector(uiSection) {
return createMovieEqualSelector(
createUnoptimizedSelector(uiSection),
(movies) => movies
);
}
export default createMovieClientSideCollectionItemsSelector;
export default createIndexerClientSideCollectionItemsSelector;

View File

@@ -1,10 +1,10 @@
import { createSelector } from 'reselect';
function createMovieSelector() {
function createIndexerSelector() {
return createSelector(
(state, { movieId }) => movieId,
(state) => state.movies.itemMap,
(state) => state.movies.items,
(state) => state.indexers.itemMap,
(state) => state.indexers.items,
(movieId, itemMap, allMovies) => {
if (allMovies && itemMap && movieId in itemMap) {
return allMovies[itemMap[movieId]];
@@ -14,4 +14,4 @@ function createMovieSelector() {
);
}
export default createMovieSelector;
export default createIndexerSelector;

View File

@@ -0,0 +1,63 @@
import _ from 'lodash';
import { createSelector } from 'reselect';
import selectSettings from 'Store/Selectors/selectSettings';
function createProviderSelector(sectionName) {
return createSelector(
(state, { id }) => id,
(state) => state[sectionName],
(id, section) => {
if (!id) {
const item = _.isArray(section.schema) ? section.selectedSchema : section.schema;
const settings = selectSettings(Object.assign({ name: '' }, item), section.pendingChanges, section.saveError);
const {
isSchemaFetching: isFetching,
isSchemaPopulated: isPopulated,
schemaError: error,
isSaving,
saveError,
isTesting,
pendingChanges
} = section;
return {
isFetching,
isPopulated,
error,
isSaving,
saveError,
isTesting,
pendingChanges,
...settings,
item: settings.settings
};
}
const {
isFetching,
isPopulated,
error,
isSaving,
saveError,
isTesting,
pendingChanges
} = section;
const settings = selectSettings(_.find(section.items, { id }), pendingChanges, saveError);
return {
isFetching,
isPopulated,
error,
isSaving,
saveError,
isTesting,
...settings,
item: settings.settings
};
}
);
}
export default createProviderSelector;

View File

@@ -0,0 +1,45 @@
import { createSelector, createSelectorCreator, defaultMemoize } from 'reselect';
import hasDifferentItemsOrOrder from 'Utilities/Object/hasDifferentItemsOrOrder';
import createClientSideCollectionSelector from './createClientSideCollectionSelector';
function createUnoptimizedSelector(uiSection) {
return createSelector(
createClientSideCollectionSelector('releases', uiSection),
(releases) => {
const items = releases.items.map((s) => {
const {
guid,
title
} = s;
return {
guid,
sortTitle: title
};
});
return {
...releases,
items
};
}
);
}
function movieListEqual(a, b) {
return hasDifferentItemsOrOrder(a, b);
}
const createMovieEqualSelector = createSelectorCreator(
defaultMemoize,
movieListEqual
);
function createReleaseClientSideCollectionItemsSelector(uiSection) {
return createMovieEqualSelector(
createUnoptimizedSelector(uiSection),
(movies) => movies
);
}
export default createReleaseClientSideCollectionItemsSelector;