mirror of
https://github.com/stashapp/stash.git
synced 2025-12-06 08:26:00 +01:00
Prevent unnecessary re-queries
This commit is contained in:
parent
3494bfb197
commit
8ad889d68c
2 changed files with 20 additions and 5 deletions
|
|
@ -1,5 +1,10 @@
|
|||
import React, { useMemo } from "react";
|
||||
import { IListSelect, useCachedQueryResult, useListSelect } from "./util";
|
||||
import {
|
||||
IListSelect,
|
||||
useCachedQueryResult,
|
||||
useListSelect,
|
||||
useMetadataFilter,
|
||||
} from "./util";
|
||||
import { isFunction } from "lodash-es";
|
||||
import { IHasID } from "src/utils/data";
|
||||
import { useFilter } from "./FilterProvider";
|
||||
|
|
@ -135,10 +140,7 @@ export const QueryResultContext = <
|
|||
}, [filter, filterHook]);
|
||||
|
||||
// metadata filter is the effective filter with the sort, page size and page number removed
|
||||
const metadataFilter = useMemo(
|
||||
() => effectiveFilter.metadataInfo(),
|
||||
[effectiveFilter]
|
||||
);
|
||||
const metadataFilter = useMetadataFilter(effectiveFilter);
|
||||
|
||||
const result = useResult(effectiveFilter);
|
||||
|
||||
|
|
|
|||
|
|
@ -483,6 +483,19 @@ export function useCachedQueryResult<T extends QueryResult>(
|
|||
return cachedResult;
|
||||
}
|
||||
|
||||
// used to generate a metadata info filter that only updates when necessary
|
||||
export function useMetadataFilter(filter: ListFilterModel) {
|
||||
const lastValue = usePrevious(filter);
|
||||
|
||||
return useMemo(() => {
|
||||
if (!lastValue || !totalCountImpacted(lastValue!, filter)) {
|
||||
return filter.metadataInfo();
|
||||
}
|
||||
|
||||
return lastValue;
|
||||
}, [filter, lastValue]);
|
||||
}
|
||||
|
||||
export interface IQueryResultHook<
|
||||
T extends QueryResult,
|
||||
E extends IHasID = IHasID
|
||||
|
|
|
|||
Loading…
Reference in a new issue