Setup provider

This commit is contained in:
goncy 2021-08-25 11:13:17 -03:00
parent 0c2855a323
commit b64b3f8360
6 changed files with 47 additions and 14 deletions

View File

@ -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=

View File

@ -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

View File

@ -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)
} }

View 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'

View File

@ -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({

View File

@ -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 },