refactor to use new query object in SearchPanel
not actually including zone in the GraphQL query yet, but it's available in the right location now!
This commit is contained in:
parent
479f43ed22
commit
821d05c141
3 changed files with 15 additions and 7 deletions
|
@ -51,7 +51,7 @@ function ItemsAndSearchPanels({ loading, outfitState, dispatchToOutfit }) {
|
|||
>
|
||||
<Box px="4" py="2">
|
||||
<SearchPanel
|
||||
query={searchQuery.value}
|
||||
query={searchQuery}
|
||||
outfitState={outfitState}
|
||||
dispatchToOutfit={dispatchToOutfit}
|
||||
scrollContainerRef={scrollContainerRef}
|
||||
|
|
|
@ -193,7 +193,10 @@ function useSearchResults(query, outfitState) {
|
|||
|
||||
// We debounce the search query, so that we don't resend a new query whenever
|
||||
// the user types anything.
|
||||
const debouncedQuery = useDebounce(query, 300, { waitForFirstPause: true });
|
||||
const debouncedQuery = useDebounce(query, 300, {
|
||||
waitForFirstPause: true,
|
||||
initialValue: { value: "", filterToZoneLabel: null },
|
||||
});
|
||||
|
||||
// When the query changes, we should update our impression of whether we've
|
||||
// reached the end!
|
||||
|
@ -254,8 +257,8 @@ function useSearchResults(query, outfitState) {
|
|||
${itemAppearanceFragment}
|
||||
`,
|
||||
{
|
||||
variables: { query: debouncedQuery, speciesId, colorId, offset: 0 },
|
||||
skip: debouncedQuery === null,
|
||||
variables: { query: debouncedQuery.value, speciesId, colorId, offset: 0 },
|
||||
skip: !debouncedQuery.value && !debouncedQuery.filterToZoneLabel,
|
||||
notifyOnNetworkStatusChange: true,
|
||||
onCompleted: (d) => {
|
||||
// This is called each time the query completes, including on
|
||||
|
|
|
@ -78,10 +78,15 @@ export function safeImageUrl(url) {
|
|||
*
|
||||
* Adapted from https://usehooks.com/useDebounce/
|
||||
*/
|
||||
export function useDebounce(value, delay, { waitForFirstPause = false } = {}) {
|
||||
export function useDebounce(
|
||||
value,
|
||||
delay,
|
||||
{ waitForFirstPause = false, initialValue = null } = {}
|
||||
) {
|
||||
// State and setters for debounced value
|
||||
const initialValue = waitForFirstPause ? null : value;
|
||||
const [debouncedValue, setDebouncedValue] = React.useState(initialValue);
|
||||
const [debouncedValue, setDebouncedValue] = React.useState(
|
||||
waitForFirstPause ? initialValue : value
|
||||
);
|
||||
|
||||
React.useEffect(
|
||||
() => {
|
||||
|
|
Loading…
Reference in a new issue