Refactor Indexer index to use react-window

(cherry picked from commit d022679b7dcbce3cec98e6a1fd0879e3c0d92523)
This commit is contained in:
Mark McDowall
2023-01-05 18:20:49 -08:00
committed by Qstick
parent c2599ef2e7
commit c0383ad5f5
314 changed files with 4928 additions and 3017 deletions

View File

@@ -44,7 +44,14 @@ function filter(items, state) {
const predicate = filterPredicates[key];
if (Array.isArray(value)) {
accepted = value.some((v) => predicate(item, v, type));
if (
type === filterTypes.NOT_CONTAINS ||
type === filterTypes.NOT_EQUAL
) {
accepted = value.every((v) => predicate(item, v, type));
} else {
accepted = value.some((v) => predicate(item, v, type));
}
} else {
accepted = predicate(item, value, type);
}

View File

@@ -1,10 +1,10 @@
import { createSelector } from 'reselect';
import createIndexerSelector from './createIndexerSelector';
function createIndexerAppProfileSelector() {
function createIndexerAppProfileSelector(indexerId) {
return createSelector(
(state) => state.settings.appProfiles.items,
createIndexerSelector(),
createIndexerSelector(indexerId),
(appProfiles, indexer = {}) => {
return appProfiles.find((profile) => {
return profile.id === indexer.appProfileId;

View File

@@ -1,15 +1,22 @@
import { createSelector } from 'reselect';
function createIndexerSelector() {
return createSelector(
(state, { indexerId }) => indexerId,
(state) => state.indexers.itemMap,
(state) => state.indexers.items,
(indexerId, itemMap, allIndexers) => {
if (allIndexers && itemMap && indexerId in itemMap) {
function createIndexerSelector(id) {
if (id == null) {
return createSelector(
(state, { indexerId }) => indexerId,
(state) => state.indexers.itemMap,
(state) => state.indexers.items,
(indexerId, itemMap, allIndexers) => {
return allIndexers[itemMap[indexerId]];
}
return undefined;
);
}
return createSelector(
(state) => state.indexers.itemMap,
(state) => state.indexers.items,
(itemMap, allIndexers) => {
return allIndexers[itemMap[id]];
}
);
}