mirror of
https://github.com/vercel/commerce.git
synced 2025-07-22 20:26:49 +00:00
Update Next and make the CartProvider not required anymore
This commit is contained in:
@@ -1,19 +1,9 @@
|
||||
import type { FC } from 'react'
|
||||
import {
|
||||
CartProvider as CommerceCartProvider,
|
||||
useCart as useCommerceCart,
|
||||
} from '@lib/commerce/cart'
|
||||
import { CartProvider, useCart as useCommerceCart } from '@lib/commerce/cart'
|
||||
import type { Cart } from '../api/cart'
|
||||
|
||||
export type { Cart }
|
||||
|
||||
export const CartProvider: FC = ({ children }) => {
|
||||
return (
|
||||
<CommerceCartProvider url="/api/bigcommerce/cart">
|
||||
{children}
|
||||
</CommerceCartProvider>
|
||||
)
|
||||
}
|
||||
export { CartProvider }
|
||||
|
||||
export function useCart() {
|
||||
const cart = useCommerceCart<Cart | null>()
|
||||
|
@@ -3,15 +3,18 @@ import useSWR, { responseInterface } from 'swr'
|
||||
import Cookies from 'js-cookie'
|
||||
import { useCommerce } from '..'
|
||||
|
||||
const CART_API = '/api/bigcommerce/cart'
|
||||
|
||||
export type CartResponse<C> = responseInterface<C, Error> & {
|
||||
isEmpty: boolean
|
||||
}
|
||||
|
||||
export type CartProviderProps =
|
||||
| { query: string; url?: string }
|
||||
| { query?: string; url: string }
|
||||
export type CartProviderProps = {
|
||||
query?: string
|
||||
url?: string
|
||||
}
|
||||
|
||||
const CartContext = createContext<{ query?: string; url?: string }>({})
|
||||
const CartContext = createContext<CartProviderProps>({})
|
||||
|
||||
const CartProvider: FC<CartProviderProps> = ({ children, query, url }) => {
|
||||
const value = useMemo(() => ({ query, url }), [query, url])
|
||||
@@ -22,7 +25,7 @@ function useCart<C>() {
|
||||
const { fetcherRef, cartCookie } = useCommerce()
|
||||
const fetcher = (url?: string, query?: string) =>
|
||||
Cookies.get(cartCookie) ? fetcherRef.current({ url, query }) : null
|
||||
const { url, query } = useContext(CartContext)
|
||||
const { url = CART_API, query } = useContext(CartContext)
|
||||
const response = useSWR([url, query], fetcher, {
|
||||
revalidateOnFocus: false,
|
||||
})
|
||||
|
Reference in New Issue
Block a user