Apply filter hook to results filter only (#4705)

This commit is contained in:
WithoutPants
2024-03-21 12:07:51 +11:00
committed by GitHub
parent 213c2830d1
commit 62b8ffb2b6

View File

@@ -137,6 +137,7 @@ export function makeItemList<T extends QueryResult, E extends IDataItem>({
const RenderList: React.FC<IItemListProps<T, E> & IRenderListProps> = ({
filter,
filterHook,
onChangePage: _onChangePage,
updateFilter,
persistState,
@@ -156,7 +157,14 @@ export function makeItemList<T extends QueryResult, E extends IDataItem>({
const [editingCriterion, setEditingCriterion] = useState<string>();
const [showEditFilter, setShowEditFilter] = useState(false);
const result = useResult(filter);
const effectiveFilter = useMemo(() => {
if (filterHook) {
return filterHook(cloneDeep(filter));
}
return filter;
}, [filter, filterHook]);
const result = useResult(effectiveFilter);
const [totalCount, setTotalCount] = useState(0);
const [metadataByline, setMetadataByline] = useState<React.ReactNode>();
const items = useMemo(() => getItems(result), [result]);
@@ -525,7 +533,6 @@ export function makeItemList<T extends QueryResult, E extends IDataItem>({
persistState,
persistanceKey = filterMode,
defaultSort = filterOptions.defaultSortBy,
filterHook,
defaultZoomIndex,
alterQuery = true,
} = props;
@@ -712,17 +719,11 @@ export function makeItemList<T extends QueryResult, E extends IDataItem>({
[filter, updateFilter]
);
const renderFilter = useMemo(() => {
if (filterInitialised) {
return filterHook ? filterHook(cloneDeep(filter)) : filter;
}
}, [filterInitialised, filter, filterHook]);
if (!renderFilter) return null;
if (!filterInitialised) return null;
return (
<RenderList
filter={renderFilter}
filter={filter}
onChangePage={onChangePage}
updateFilter={updateFilter}
{...props}