From 9aa4871418e43fc33c94b1295e2f97273a77969e Mon Sep 17 00:00:00 2001 From: goncy Date: Wed, 11 Aug 2021 10:43:50 -0300 Subject: [PATCH] Use new endpoints --- commerce.config.json | 2 +- .../api/operations/get-all-product-paths.ts | 2 +- .../api/operations/get-all-products.ts | 2 +- .../ordercloud/api/operations/get-product.ts | 2 +- .../api/operations/get-site-info.ts | 54 ++++++++++--------- framework/ordercloud/commerce.config.json | 5 +- framework/ordercloud/types/category.ts | 10 ++++ 7 files changed, 46 insertions(+), 31 deletions(-) create mode 100644 framework/ordercloud/types/category.ts diff --git a/commerce.config.json b/commerce.config.json index 8fcacf543..21cb51c87 100644 --- a/commerce.config.json +++ b/commerce.config.json @@ -1,6 +1,6 @@ { "features": { - "cart": false, + "cart": true, "search": false, "wishlist": false, "customerAuth": false, diff --git a/framework/ordercloud/api/operations/get-all-product-paths.ts b/framework/ordercloud/api/operations/get-all-product-paths.ts index af2192bf0..8b7f8dcd0 100644 --- a/framework/ordercloud/api/operations/get-all-product-paths.ts +++ b/framework/ordercloud/api/operations/get-all-product-paths.ts @@ -22,7 +22,7 @@ export default function getAllProductPathsOperation({ // Get all products const rawProducts: RawProduct[] = await fetch<{ Items: RawProduct[] }>( 'GET', - '/products' + '/me/products' ).then((response) => response.Items) return { diff --git a/framework/ordercloud/api/operations/get-all-products.ts b/framework/ordercloud/api/operations/get-all-products.ts index 249e80806..f0614bd68 100644 --- a/framework/ordercloud/api/operations/get-all-products.ts +++ b/framework/ordercloud/api/operations/get-all-products.ts @@ -23,7 +23,7 @@ export default function getAllProductsOperation({ // Get all products const rawProducts: RawProduct[] = await fetch<{ Items: RawProduct[] }>( 'GET', - '/products' + '/me/products' ).then((response) => response.Items) return { diff --git a/framework/ordercloud/api/operations/get-product.ts b/framework/ordercloud/api/operations/get-product.ts index ce0c6735b..975d9529a 100644 --- a/framework/ordercloud/api/operations/get-product.ts +++ b/framework/ordercloud/api/operations/get-product.ts @@ -24,7 +24,7 @@ export default function getProductOperation({ // Get a single product const rawProduct: RawProduct = await fetch( 'GET', - `/products/${variables?.slug}` + `/me/products/${variables?.slug}` ) return { diff --git a/framework/ordercloud/api/operations/get-site-info.ts b/framework/ordercloud/api/operations/get-site-info.ts index abe4defea..4914bb335 100644 --- a/framework/ordercloud/api/operations/get-site-info.ts +++ b/framework/ordercloud/api/operations/get-site-info.ts @@ -1,6 +1,8 @@ -import { OperationContext } from '@commerce/api/operations' -import { Category } from '@commerce/types/site' -import { OrdercloudConfig } from '../index' +import type { OperationContext } from '@commerce/api/operations' +import type { Category, GetSiteInfoOperation } from '@commerce/types/site' +import { RawCategory } from '@framework/types/category' + +import type { OrdercloudConfig, Provider } from '../index' export type GetSiteInfoResult< T extends { categories: any[]; brands: any[] } = { @@ -9,34 +11,36 @@ export type GetSiteInfoResult< } > = T -export default function getSiteInfoOperation({}: OperationContext) { - function getSiteInfo({ - query, - variables, - config: cfg, +export default function getSiteInfoOperation({ + commerce, +}: OperationContext) { + async function getSiteInfo({ + config, }: { query?: string variables?: any config?: Partial preview?: boolean - } = {}): Promise { - return Promise.resolve({ - categories: [ - { - id: 'new-arrivals', - name: 'New Arrivals', - slug: 'new-arrivals', - path: '/new-arrivals', - }, - { - id: 'featured', - name: 'Featured', - slug: 'featured', - path: '/featured', - }, - ], + } = {}): Promise { + // Get fetch from the config + const { fetch } = commerce.getConfig(config) + + // Get a single product + const rawCategories: RawCategory[] = await fetch<{ Items: RawCategory[] }>( + 'GET', + `/me/categories` + ).then((response) => response.Items) + + return { + // Normalize product to commerce schema + categories: rawCategories.map((category) => ({ + id: category.ID, + name: category.Name, + slug: category.ID, + path: `/${category.ID}`, + })), brands: [], - }) + } } return getSiteInfo diff --git a/framework/ordercloud/commerce.config.json b/framework/ordercloud/commerce.config.json index 9bad66aad..bdbd67ea9 100644 --- a/framework/ordercloud/commerce.config.json +++ b/framework/ordercloud/commerce.config.json @@ -2,8 +2,9 @@ "provider": "ordercloud", "features": { "wishlist": false, - "cart": false, + "cart": true, "search": false, - "customerAuth": false + "customerAuth": false, + "customCheckout": false } } diff --git a/framework/ordercloud/types/category.ts b/framework/ordercloud/types/category.ts new file mode 100644 index 000000000..247844a56 --- /dev/null +++ b/framework/ordercloud/types/category.ts @@ -0,0 +1,10 @@ +export interface RawCategory { + ID: string + Name: string + Description: null | string + ListOrder: number + Active: boolean + ParentID: null + ChildCount: number + xp: null +}