commerce/framework/medusa/product/use-search.tsx
Kasper Fabricius Kristensen 92d70c752f
Medusa provider (#3)
* initial provider

* readded types
2021-09-14 17:48:06 +02:00

42 lines
1.1 KiB
TypeScript

import { SWRHook } from '@commerce/utils/types'
import useSearch, { UseSearch } from '@commerce/product/use-search'
import { MedusaProduct } from '@framework/types'
import { normalizeProduct } from '@framework/utils/normalizers/normalize-products'
export default useSearch as UseSearch<typeof handler>
export const handler: SWRHook<any> = {
fetchOptions: {
query: 'products',
method: 'list',
},
async fetcher({ input, options, fetch }) {
const { products } = await fetch({
...options,
variables: { query: null },
})
return {
products: products
? products.map((product: MedusaProduct) => normalizeProduct(product))
: [],
found: products.length,
}
},
useHook:
({ useData }) =>
({ input = {} }) => {
return useData({
input: [
['search', input.search],
['categoryId', input.categoryId],
['brandId', input.brandId],
['sort', input.sort],
],
swrOptions: {
revalidateOnFocus: false,
...input.swrOptions,
},
})
},
}