Skip to content

Commit 922c783

Browse files
committed
Merge branch 'memoize-getFilters' of Arnei/opencast-admin-interface into r/17.x
Pull request #1330 Fixes #1242 Memoize getFilters
2 parents 59c3bb9 + a711cda commit 922c783

2 files changed

Lines changed: 10 additions & 3 deletions

File tree

src/components/shared/TableFilterProfiles.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { availableHotkeys } from "../../configs/hotkeysConfig";
1818
import { AsyncThunk } from "@reduxjs/toolkit";
1919
import ButtonLikeAnchor from "./ButtonLikeAnchor";
2020
import { ParseKeys } from "i18next";
21+
import { Resource } from "../../slices/tableSlice";
2122

2223
/**
2324
* This component renders the table filter profiles in the upper right corner when clicked on settings icon of the
@@ -34,7 +35,7 @@ const TableFiltersProfiles = ({
3435
setFilterSettings: (_: boolean) => void,
3536
loadResource: AsyncThunk<any, void, any>,
3637
loadResourceIntoTable: () => AppThunk,
37-
resource: string,
38+
resource: Resource,
3839
}) => {
3940
const dispatch = useAppDispatch();
4041

src/selectors/tableFilterSelectors.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import { createSelector } from "reselect";
12
import { RootState } from "../store";
3+
import { Resource } from "../slices/tableSlice";
24

35
/**
46
* This file contains selectors regarding table filters
@@ -10,5 +12,9 @@ export const getTextFilter = (state: RootState) => state.tableFilters.textFilter
1012
export const getSelectedFilter = (state: RootState) => state.tableFilters.selectedFilter;
1113
export const getSecondFilter = (state: RootState) => state.tableFilters.secondFilter;
1214
export const getCurrentFilterResource = (state: RootState) => state.tableFilters.currentResource;
13-
export const getFilters = (state: RootState, resource: string) =>
14-
state.tableFilters.data.filter(obj => obj.resource === resource);
15+
export const getFilters = createSelector(
16+
[getAllFilters, (state, resource: Resource) => resource],
17+
(filters, resource) => {
18+
return filters.filter(obj => obj.resource === resource);
19+
}
20+
);

0 commit comments

Comments
 (0)