mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-27 20:44:00 +02:00
Indexer and Search page work
This commit is contained in:
@@ -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;
|
@@ -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;
|
63
frontend/src/Store/Selectors/createProviderSelector.js
Normal file
63
frontend/src/Store/Selectors/createProviderSelector.js
Normal 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;
|
@@ -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;
|
Reference in New Issue
Block a user