create get-site-info operation

This commit is contained in:
DuvCharles 2022-11-18 14:23:39 +01:00
parent ad12c23ab2
commit 64315a74ca
7 changed files with 36 additions and 21 deletions

View File

@ -2,7 +2,7 @@ import { Product } from '@vercel/commerce/types/product'
import type { OperationContext } from '@vercel/commerce/api/operations' import type { OperationContext } from '@vercel/commerce/api/operations'
import type { Provider, SyliusConfig } from '../index' import type { Provider, SyliusConfig } from '../index'
import { SyliusProduct } from '../../types/products' import { SyliusProduct } from '../../types/products'
import { normalizeProduct } from '../../utils/normalize' import { normalizeProduct } from '../../utils/normalize/normalize-product'
export default function getAllProductsOperation({ export default function getAllProductsOperation({
commerce, commerce,

View File

@ -2,7 +2,7 @@ import type { SyliusConfig } from '../index'
import { Product } from '@vercel/commerce/types/product' import { Product } from '@vercel/commerce/types/product'
import { GetProductOperation } from '@vercel/commerce/types/product' import { GetProductOperation } from '@vercel/commerce/types/product'
import type { OperationContext } from '@vercel/commerce/api/operations' import type { OperationContext } from '@vercel/commerce/api/operations'
import { normalizeProduct } from '../../utils/normalize' import { normalizeProduct } from '../../utils/normalize/normalize-product'
export default function getProductOperation({ export default function getProductOperation({
commerce, commerce,

View File

@ -1,5 +1,7 @@
import { OperationContext } from '@vercel/commerce/api/operations' import { OperationContext } from '@vercel/commerce/api/operations'
import { Category } from '@vercel/commerce/types/site' import { Category } from '@vercel/commerce/types/site'
import { SyliusCategorie } from 'types/site'
import { normalizeCategorie } from '../../utils/normalize/normalize-site'
import { SyliusConfig } from '../index' import { SyliusConfig } from '../index'
export type GetSiteInfoResult< export type GetSiteInfoResult<
@ -9,8 +11,10 @@ export type GetSiteInfoResult<
} }
> = T > = T
export default function getSiteInfoOperation({}: OperationContext<any>) { export default function getSiteInfoOperation({
function getSiteInfo({ commerce,
}: OperationContext<any>) {
async function getSiteInfo({
query, query,
variables, variables,
config: cfg, config: cfg,
@ -20,21 +24,14 @@ export default function getSiteInfoOperation({}: OperationContext<any>) {
config?: Partial<SyliusConfig> config?: Partial<SyliusConfig>
preview?: boolean preview?: boolean
} = {}): Promise<GetSiteInfoResult> { } = {}): Promise<GetSiteInfoResult> {
const config = commerce.getConfig(cfg)
const syliusCategories = await config.fetch('GET', '/taxons')
const categories = syliusCategories.map(
(syliusCategories: SyliusCategorie) =>
normalizeCategorie(syliusCategories)
)
return Promise.resolve({ return Promise.resolve({
categories: [ categories: categories,
{
id: 'new-arrivals',
name: 'New Arrivals',
slug: 'new-arrivals',
path: '/new-arrivals',
},
{
id: 'featured',
name: 'Featured',
slug: 'featured',
path: '/featured',
},
],
brands: [], brands: [],
}) })
} }

View File

@ -0,0 +1,8 @@
export interface SyliusCategorie {
id: number
code: string
name: string
slug: string
description: string
childre: string[]
}

View File

@ -1,6 +1,6 @@
export { default as handleFetchResponse } from './handle-fetch-response' export { default as handleFetchResponse } from './handle-fetch-response'
export * from './normalize' export * from './normalize/normalize-product'
export * from './normalize/normalize-site'
/* /*
export { default as getSearchVariables } from './get-search-variables' export { default as getSearchVariables } from './get-search-variables'
export { default as getSortVariables } from './get-sort-variables' export { default as getSortVariables } from './get-sort-variables'

View File

@ -12,7 +12,7 @@ import {
SyliusProductOption, SyliusProductOption,
SyliusProductOptionValues, SyliusProductOptionValues,
SyliusProductVariant, SyliusProductVariant,
} from '../types/products' } from '../../types/products'
export const normalizeProduct = (product: SyliusProduct): Product => { export const normalizeProduct = (product: SyliusProduct): Product => {
return { return {

View File

@ -0,0 +1,10 @@
import { SyliusCategorie } from 'types/site'
export const normalizeCategorie = (categorie: SyliusCategorie) => {
return {
id: categorie.id.toString(),
name: categorie.name,
slug: categorie.slug,
path: `/${categorie.slug}`,
}
}