diff --git a/.env.template b/.env.template index 4a3bfbff9..161966725 100644 --- a/.env.template +++ b/.env.template @@ -25,4 +25,3 @@ NEXT_PUBLIC_VENDURE_SHOP_API_URL= NEXT_PUBLIC_VENDURE_LOCAL_URL= NEXT_PUBLIC_ORDERCLOUD_CLIENT_ID= -NEXT_PUBLIC_ORDERCLOUD_CLIENT_SECRET= diff --git a/framework/ordercloud/api/endpoints/cart/index.ts b/framework/ordercloud/api/endpoints/cart/index.ts index 491bf0ac9..756bce9fe 100644 --- a/framework/ordercloud/api/endpoints/cart/index.ts +++ b/framework/ordercloud/api/endpoints/cart/index.ts @@ -1 +1,28 @@ -export default function noopApi(...args: any[]): void {} +import type { CartSchema } from '../../../types/cart' +import type { OrdercloudAPI } from '../..' + +import { GetAPISchema, createEndpoint } from '@commerce/api' +import cartEndpoint from '@commerce/api/endpoints/cart' + +import getCart from './get-cart' +import addItem from './add-item' +import updateItem from './update-item' +import removeItem from './remove-item' + +export type CartAPI = GetAPISchema + +export type CartEndpoint = CartAPI['endpoint'] + +export const handlers: CartEndpoint['handlers'] = { + getCart, + addItem, + updateItem, + removeItem, +} + +const cartApi = createEndpoint({ + handler: cartEndpoint, + handlers, +}) + +export default cartApi diff --git a/framework/ordercloud/api/index.ts b/framework/ordercloud/api/index.ts index 180984ad6..91f727c10 100644 --- a/framework/ordercloud/api/index.ts +++ b/framework/ordercloud/api/index.ts @@ -1,6 +1,6 @@ import type { CommerceAPI, CommerceAPIConfig } from '@commerce/api' import { getCommerceApi as commerceApi } from '@commerce/api' -import createFetcher from './utils/fetch-rest' +import createFetcher from './utils/fetch' import getAllPages from './operations/get-all-pages' import getPage from './operations/get-page' @@ -9,6 +9,7 @@ import getCustomerWishlist from './operations/get-customer-wishlist' import getAllProductPaths from './operations/get-all-product-paths' import getAllProducts from './operations/get-all-products' import getProduct from './operations/get-product' +import { API_URL, CART_COOKIE, CUSTOMER_COOKIE } from '../constants' export interface OrdercloudConfig extends Omit { fetch: ( @@ -20,10 +21,10 @@ export interface OrdercloudConfig extends Omit { } const config: OrdercloudConfig = { - commerceUrl: 'https://sandboxapi.ordercloud.io', + commerceUrl: API_URL, apiToken: '', - cartCookie: '', - customerCookie: '', + cartCookie: CART_COOKIE, + customerCookie: CUSTOMER_COOKIE, cartCookieMaxAge: 2592000, fetch: createFetcher(() => getCommerceApi().getConfig()), } @@ -41,10 +42,10 @@ const operations = { export const provider = { config, operations } export type Provider = typeof provider -export type OrderCloudAPI

= CommerceAPI

+export type OrdercloudAPI

= CommerceAPI

export function getCommerceApi

( customProvider: P = provider as any -): OrderCloudAPI

{ +): OrdercloudAPI

{ return commerceApi(customProvider as any) } diff --git a/framework/ordercloud/constants.ts b/framework/ordercloud/constants.ts new file mode 100644 index 000000000..b6cdf73fd --- /dev/null +++ b/framework/ordercloud/constants.ts @@ -0,0 +1,4 @@ +export const CART_COOKIE = 'ordercloud.cart' +export const CUSTOMER_COOKIE = 'ordercloud.customer' +export const API_URL = 'https://sandboxapi.ordercloud.io' +export const LOCALE = 'en-us' diff --git a/framework/ordercloud/index.tsx b/framework/ordercloud/index.tsx index 07258e3c0..553028fef 100644 --- a/framework/ordercloud/index.tsx +++ b/framework/ordercloud/index.tsx @@ -6,10 +6,11 @@ import { CommerceProvider as CoreCommerceProvider, useCommerce as useCoreCommerce, } from '@commerce' +import { CART_COOKIE, LOCALE } from './constants' export const ordercloudConfig: CommerceConfig = { - locale: 'en-us', - cartCookie: 'session', + locale: LOCALE, + cartCookie: CART_COOKIE, } export function CommerceProvider({ diff --git a/framework/ordercloud/provider.ts b/framework/ordercloud/provider.ts index 9b5d267c6..718081324 100644 --- a/framework/ordercloud/provider.ts +++ b/framework/ordercloud/provider.ts @@ -1,4 +1,3 @@ -import { fetcher } from './fetcher' import { handler as useCart } from './cart/use-cart' import { handler as useAddItem } from './cart/use-add-item' import { handler as useUpdateItem } from './cart/use-update-item' @@ -8,12 +7,14 @@ import { handler as useSearch } from './product/use-search' import { handler as useLogin } from './auth/use-login' import { handler as useLogout } from './auth/use-logout' import { handler as useSignup } from './auth/use-signup' +import { default as fetcher } from './fetcher' +import { CART_COOKIE, LOCALE } from './constants' export type Provider = typeof ordercloudProvider export const ordercloudProvider = { - locale: 'en-us', - cartCookie: 'session', - fetcher: fetcher, + locale: LOCALE, + cartCookie: CART_COOKIE, + fetcher, cart: { useCart, useAddItem, useUpdateItem, useRemoveItem }, customer: { useCustomer }, products: { useSearch },