forked from crowetic/commerce
Removed the CartProvider
This commit is contained in:
parent
b5ee7feb46
commit
7758ea3199
@ -1,10 +1,8 @@
|
|||||||
import { CartProvider, useCart as useCommerceCart } from '@lib/commerce/cart'
|
import { useCart as useCommerceCart } from '@lib/commerce/cart'
|
||||||
import type { Cart } from '../api/cart'
|
import type { Cart } from '../api/cart'
|
||||||
|
|
||||||
export type { Cart }
|
export type { Cart }
|
||||||
|
|
||||||
export { CartProvider }
|
|
||||||
|
|
||||||
export function useCart() {
|
export function useCart() {
|
||||||
const cart = useCommerceCart<Cart | null>()
|
const cart = useCommerceCart<Cart | null>()
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import { FC, createContext, useContext, useMemo } from 'react'
|
|
||||||
import useSWR, { responseInterface } from 'swr'
|
import useSWR, { responseInterface } from 'swr'
|
||||||
import Cookies from 'js-cookie'
|
import Cookies from 'js-cookie'
|
||||||
import { useCommerce } from '..'
|
import { useCommerce } from '..'
|
||||||
@ -9,28 +8,15 @@ export type CartResponse<C> = responseInterface<C, Error> & {
|
|||||||
isEmpty: boolean
|
isEmpty: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type CartProviderProps = {
|
|
||||||
query?: string
|
|
||||||
url?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
const CartContext = createContext<CartProviderProps>({})
|
|
||||||
|
|
||||||
const CartProvider: FC<CartProviderProps> = ({ children, query, url }) => {
|
|
||||||
const value = useMemo(() => ({ query, url }), [query, url])
|
|
||||||
return <CartContext.Provider value={value}>{children}</CartContext.Provider>
|
|
||||||
}
|
|
||||||
|
|
||||||
function useCart<C>() {
|
function useCart<C>() {
|
||||||
const { fetcherRef, cartCookie } = useCommerce()
|
const { fetcherRef, cartCookie } = useCommerce()
|
||||||
const fetcher = (url?: string, query?: string) =>
|
const fetcher = (url?: string, query?: string) =>
|
||||||
Cookies.get(cartCookie) ? fetcherRef.current({ url, query }) : null
|
Cookies.get(cartCookie) ? fetcherRef.current({ url, query }) : null
|
||||||
const { url = CART_API, query } = useContext(CartContext)
|
const response = useSWR([CART_API, undefined], fetcher, {
|
||||||
const response = useSWR([url, query], fetcher, {
|
|
||||||
revalidateOnFocus: false,
|
revalidateOnFocus: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
return Object.assign(response, { isEmpty: true }) as CartResponse<C>
|
return Object.assign(response, { isEmpty: true }) as CartResponse<C>
|
||||||
}
|
}
|
||||||
|
|
||||||
export { CartProvider, useCart }
|
export { useCart }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user