Added util method for provider creation

This commit is contained in:
Luis Alvarez 2021-08-26 23:04:45 -05:00
parent 760e26c35c
commit f07b29c0f0
2 changed files with 16 additions and 16 deletions

View File

@ -1,23 +1,10 @@
import {
CommerceProvider as CoreCommerceProvider,
CommerceProviderProps,
useCommerce as useCoreCommerce,
} from '@commerce'
import { getCommerceProvider, useCommerce as useCoreCommerce } from '@commerce'
import { bigcommerceProvider } from './provider'
import type { BigcommerceProvider } from './provider'
export { bigcommerceProvider }
export type { BigcommerceProvider }
export function CommerceProvider({
children,
...props
}: CommerceProviderProps) {
return (
<CoreCommerceProvider provider={{ ...bigcommerceProvider, ...props }}>
{children}
</CoreCommerceProvider>
)
}
export const CommerceProvider = getCommerceProvider(bigcommerceProvider)
export const useCommerce = () => useCoreCommerce<BigcommerceProvider>()

View File

@ -70,7 +70,7 @@ export type CommerceProviderProps = {
children?: ReactNode
} & Partial<CommerceConfig>
export function CommerceProvider<P extends Provider>({
export function CoreCommerceProvider<P extends Provider>({
provider,
children,
}: CommerceProps<P>) {
@ -88,6 +88,19 @@ export function CommerceProvider<P extends Provider>({
return <Commerce.Provider value={cfg}>{children}</Commerce.Provider>
}
export function getCommerceProvider<P extends Provider>(provider: P) {
return function CommerceProvider({
children,
...props
}: CommerceProviderProps) {
return (
<CoreCommerceProvider provider={{ ...provider, ...props }}>
{children}
</CoreCommerceProvider>
)
}
}
export function useCommerce<P extends Provider>() {
return useContext(Commerce) as CommerceContextValue<P>
}