saleor-dashboard/src/components/Navigator/queries/useCatalogSearch.ts
Krzysztof Wolski a82de30309
Add circleci config and enhance our linters (#519)
* Add circleci config

* Season linting config

* Apply code style
2020-05-14 11:30:32 +02:00

66 lines
1.4 KiB
TypeScript

import makeQuery, { UseQueryResult } from "@saleor/hooks/makeQuery";
import useDebounce from "@saleor/hooks/useDebounce";
import gql from "graphql-tag";
import { useState } from "react";
import { SearchCatalog, SearchCatalogVariables } from "./types/SearchCatalog";
const searchCatalog = gql`
query SearchCatalog($first: Int!, $query: String!) {
categories(first: $first, filter: { search: $query }) {
edges {
node {
id
name
}
}
}
collections(first: $first, filter: { search: $query }) {
edges {
node {
id
name
isPublished
publicationDate
}
}
}
products(first: $first, filter: { search: $query }) {
edges {
node {
id
category {
id
name
}
name
}
}
}
}
`;
const useSearchCatalogQuery = makeQuery<SearchCatalog, SearchCatalogVariables>(
searchCatalog
);
type UseSearchCatalog = [
UseQueryResult<SearchCatalog, SearchCatalogVariables>,
(query: string) => void
];
function useSearchCatalog(first: number): UseSearchCatalog {
const [query, setQuery] = useState("");
const setQueryDebounced = useDebounce(setQuery);
const result = useSearchCatalogQuery({
skip: query === "",
variables: {
first,
query
}
});
return [result, setQueryDebounced];
}
export default useSearchCatalog;