saleor-dashboard/src/searches/useAvailableProductAttributeSearch.ts
2023-01-16 10:45:12 +01:00

68 lines
1.6 KiB
TypeScript

import { gql } from "@apollo/client";
import {
SearchAvailableProductAttributesDocument,
SearchAvailableProductAttributesQuery,
SearchAvailableProductAttributesQueryVariables,
} from "@dashboard/graphql";
import makeSearch from "@dashboard/hooks/makeSearch";
export const searchProductAttributes = gql`
query SearchAvailableProductAttributes(
$id: ID!
$after: String
$first: Int!
$query: String!
) {
productType(id: $id) {
id
availableAttributes(
after: $after
first: $first
filter: { search: $query }
) {
edges {
node {
...AvailableAttribute
}
}
pageInfo {
...PageInfo
}
}
}
}
`;
export default makeSearch<
SearchAvailableProductAttributesQuery,
SearchAvailableProductAttributesQueryVariables
>(SearchAvailableProductAttributesDocument, result =>
result.loadMore(
(prev, next) => {
if (
prev.productType.availableAttributes.pageInfo.endCursor ===
next.productType.availableAttributes.pageInfo.endCursor
) {
return prev;
}
return {
...prev,
productType: {
...prev.productType,
availableAttributes: {
...prev.productType.availableAttributes,
edges: [
...prev.productType.availableAttributes.edges,
...next.productType.availableAttributes.edges,
],
pageInfo: next.productType.availableAttributes.pageInfo,
},
},
};
},
{
after: result.data.productType.availableAttributes.pageInfo.endCursor,
},
),
);