mirror of
https://github.com/vercel/commerce.git
synced 2025-07-03 19:51:22 +00:00
Setup provider
This commit is contained in:
parent
0c2855a323
commit
b64b3f8360
@ -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=
|
||||
|
@ -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<OrdercloudAPI, CartSchema>
|
||||
|
||||
export type CartEndpoint = CartAPI['endpoint']
|
||||
|
||||
export const handlers: CartEndpoint['handlers'] = {
|
||||
getCart,
|
||||
addItem,
|
||||
updateItem,
|
||||
removeItem,
|
||||
}
|
||||
|
||||
const cartApi = createEndpoint<CartAPI>({
|
||||
handler: cartEndpoint,
|
||||
handlers,
|
||||
})
|
||||
|
||||
export default cartApi
|
||||
|
@ -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<CommerceAPIConfig, 'fetch'> {
|
||||
fetch: <T>(
|
||||
@ -20,10 +21,10 @@ export interface OrdercloudConfig extends Omit<CommerceAPIConfig, 'fetch'> {
|
||||
}
|
||||
|
||||
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<P extends Provider = Provider> = CommerceAPI<P | any>
|
||||
export type OrdercloudAPI<P extends Provider = Provider> = CommerceAPI<P | any>
|
||||
|
||||
export function getCommerceApi<P extends Provider>(
|
||||
customProvider: P = provider as any
|
||||
): OrderCloudAPI<P> {
|
||||
): OrdercloudAPI<P> {
|
||||
return commerceApi(customProvider as any)
|
||||
}
|
||||
|
4
framework/ordercloud/constants.ts
Normal file
4
framework/ordercloud/constants.ts
Normal file
@ -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'
|
@ -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({
|
||||
|
@ -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 },
|
||||
|
Loading…
x
Reference in New Issue
Block a user