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 React, { useMemo } from "react";
|
||||||
import { IListSelect, useCachedQueryResult, useListSelect } from "./util";
|
import {
|
||||||
|
IListSelect,
|
||||||
|
useCachedQueryResult,
|
||||||
|
useListSelect,
|
||||||
|
useMetadataFilter,
|
||||||
|
} from "./util";
|
||||||
import { isFunction } from "lodash-es";
|
import { isFunction } from "lodash-es";
|
||||||
import { IHasID } from "src/utils/data";
|
import { IHasID } from "src/utils/data";
|
||||||
import { useFilter } from "./FilterProvider";
|
import { useFilter } from "./FilterProvider";
|
||||||
|
|
@ -135,10 +140,7 @@ export const QueryResultContext = <
|
||||||
}, [filter, filterHook]);
|
}, [filter, filterHook]);
|
||||||
|
|
||||||
// metadata filter is the effective filter with the sort, page size and page number removed
|
// metadata filter is the effective filter with the sort, page size and page number removed
|
||||||
const metadataFilter = useMemo(
|
const metadataFilter = useMetadataFilter(effectiveFilter);
|
||||||
() => effectiveFilter.metadataInfo(),
|
|
||||||
[effectiveFilter]
|
|
||||||
);
|
|
||||||
|
|
||||||
const result = useResult(effectiveFilter);
|
const result = useResult(effectiveFilter);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -483,6 +483,19 @@ export function useCachedQueryResult<T extends QueryResult>(
|
||||||
return cachedResult;
|
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<
|
export interface IQueryResultHook<
|
||||||
T extends QueryResult,
|
T extends QueryResult,
|
||||||
E extends IHasID = IHasID
|
E extends IHasID = IHasID
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue