mirror of
https://github.com/vercel/commerce.git
synced 2025-07-04 04:01:21 +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_VENDURE_LOCAL_URL=
|
||||||
|
|
||||||
NEXT_PUBLIC_ORDERCLOUD_CLIENT_ID=
|
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 type { CommerceAPI, CommerceAPIConfig } from '@commerce/api'
|
||||||
import { getCommerceApi as commerceApi } 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 getAllPages from './operations/get-all-pages'
|
||||||
import getPage from './operations/get-page'
|
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 getAllProductPaths from './operations/get-all-product-paths'
|
||||||
import getAllProducts from './operations/get-all-products'
|
import getAllProducts from './operations/get-all-products'
|
||||||
import getProduct from './operations/get-product'
|
import getProduct from './operations/get-product'
|
||||||
|
import { API_URL, CART_COOKIE, CUSTOMER_COOKIE } from '../constants'
|
||||||
|
|
||||||
export interface OrdercloudConfig extends Omit<CommerceAPIConfig, 'fetch'> {
|
export interface OrdercloudConfig extends Omit<CommerceAPIConfig, 'fetch'> {
|
||||||
fetch: <T>(
|
fetch: <T>(
|
||||||
@ -20,10 +21,10 @@ export interface OrdercloudConfig extends Omit<CommerceAPIConfig, 'fetch'> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const config: OrdercloudConfig = {
|
const config: OrdercloudConfig = {
|
||||||
commerceUrl: 'https://sandboxapi.ordercloud.io',
|
commerceUrl: API_URL,
|
||||||
apiToken: '',
|
apiToken: '',
|
||||||
cartCookie: '',
|
cartCookie: CART_COOKIE,
|
||||||
customerCookie: '',
|
customerCookie: CUSTOMER_COOKIE,
|
||||||
cartCookieMaxAge: 2592000,
|
cartCookieMaxAge: 2592000,
|
||||||
fetch: createFetcher(() => getCommerceApi().getConfig()),
|
fetch: createFetcher(() => getCommerceApi().getConfig()),
|
||||||
}
|
}
|
||||||
@ -41,10 +42,10 @@ const operations = {
|
|||||||
export const provider = { config, operations }
|
export const provider = { config, operations }
|
||||||
|
|
||||||
export type Provider = typeof provider
|
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>(
|
export function getCommerceApi<P extends Provider>(
|
||||||
customProvider: P = provider as any
|
customProvider: P = provider as any
|
||||||
): OrderCloudAPI<P> {
|
): OrdercloudAPI<P> {
|
||||||
return commerceApi(customProvider as any)
|
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,
|
CommerceProvider as CoreCommerceProvider,
|
||||||
useCommerce as useCoreCommerce,
|
useCommerce as useCoreCommerce,
|
||||||
} from '@commerce'
|
} from '@commerce'
|
||||||
|
import { CART_COOKIE, LOCALE } from './constants'
|
||||||
|
|
||||||
export const ordercloudConfig: CommerceConfig = {
|
export const ordercloudConfig: CommerceConfig = {
|
||||||
locale: 'en-us',
|
locale: LOCALE,
|
||||||
cartCookie: 'session',
|
cartCookie: CART_COOKIE,
|
||||||
}
|
}
|
||||||
|
|
||||||
export function CommerceProvider({
|
export function CommerceProvider({
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import { fetcher } from './fetcher'
|
|
||||||
import { handler as useCart } from './cart/use-cart'
|
import { handler as useCart } from './cart/use-cart'
|
||||||
import { handler as useAddItem } from './cart/use-add-item'
|
import { handler as useAddItem } from './cart/use-add-item'
|
||||||
import { handler as useUpdateItem } from './cart/use-update-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 useLogin } from './auth/use-login'
|
||||||
import { handler as useLogout } from './auth/use-logout'
|
import { handler as useLogout } from './auth/use-logout'
|
||||||
import { handler as useSignup } from './auth/use-signup'
|
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 type Provider = typeof ordercloudProvider
|
||||||
export const ordercloudProvider = {
|
export const ordercloudProvider = {
|
||||||
locale: 'en-us',
|
locale: LOCALE,
|
||||||
cartCookie: 'session',
|
cartCookie: CART_COOKIE,
|
||||||
fetcher: fetcher,
|
fetcher,
|
||||||
cart: { useCart, useAddItem, useUpdateItem, useRemoveItem },
|
cart: { useCart, useAddItem, useUpdateItem, useRemoveItem },
|
||||||
customer: { useCustomer },
|
customer: { useCustomer },
|
||||||
products: { useSearch },
|
products: { useSearch },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user