Adding checkout files

This commit is contained in:
GunaTrika 2021-10-06 17:28:19 +05:30
parent cad3ad7756
commit 737612656f
8 changed files with 119 additions and 27 deletions

View File

@ -0,0 +1 @@
export default function noopApi(...args: any[]): void {}

View File

@ -0,0 +1 @@
export default function noopApi(...args: any[]): void {}

View File

@ -0,0 +1,15 @@
import useAddItem, { UseAddItem } from '@commerce/customer/address/use-add-item'
import { MutationHook } from '@commerce/utils/types'
export default useAddItem as UseAddItem<typeof handler>
export const handler: MutationHook<any> = {
fetchOptions: {
query: '',
},
async fetcher({ input, options, fetch }) {},
useHook:
({ fetch }) =>
() =>
async () => ({}),
}

View File

@ -0,0 +1,35 @@
import type { GetAddressesHook } from '@commerce/types/customer/address'
import { useMemo } from 'react'
import { SWRHook } from '@commerce/utils/types'
import useAddresses, {
UseAddresses,
} from '@commerce/customer/address/use-addresses'
export default useAddresses as UseAddresses<typeof handler>
export const handler: SWRHook<GetAddressesHook> = {
fetchOptions: {
url: '/api/customer/address',
method: 'GET',
},
useHook: ({ useData }) =>
function useHook(input) {
const response = useData({
swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },
})
return useMemo(
() =>
Object.create(response, {
isEmpty: {
get() {
return (response.data?.length ?? 0) <= 0
},
enumerable: true,
},
}),
[response]
)
},
}

View File

@ -0,0 +1,15 @@
import useAddItem, { UseAddItem } from '@commerce/customer/card/use-add-item'
import { MutationHook } from '@commerce/utils/types'
export default useAddItem as UseAddItem<typeof handler>
export const handler: MutationHook<any> = {
fetchOptions: {
query: '',
},
async fetcher({ input, options, fetch }) {},
useHook:
({ fetch }) =>
() =>
async () => ({}),
}

View File

@ -0,0 +1,33 @@
import type { GetCardsHook } from '@commerce/types/customer/card'
import { useMemo } from 'react'
import { SWRHook } from '@commerce/utils/types'
import useCard, { UseCards } from '@commerce/customer/card/use-cards'
export default useCard as UseCards<typeof handler>
export const handler: SWRHook<GetCardsHook> = {
fetchOptions: {
url: '/api/customer/card',
method: 'GET',
},
useHook: ({ useData }) =>
function useHook(input) {
const response = useData({
swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },
})
return useMemo(
() =>
Object.create(response, {
isEmpty: {
get() {
return (response.data?.length ?? 0) <= 0
},
enumerable: true,
},
}),
[response]
)
},
}

View File

@ -1,7 +1,6 @@
import type { ReactNode } from 'react'
import { import {
CommerceConfig, CommerceConfig,
CommerceProvider as CoreCommerceProvider, getCommerceProvider,
useCommerce as useCoreCommerce, useCommerce as useCoreCommerce,
} from '@commerce' } from '@commerce'
import { elasticpathProvider } from './provider' import { elasticpathProvider } from './provider'
@ -10,27 +9,5 @@ import type { ElasticpathProvider } from './provider'
export { elasticpathProvider } export { elasticpathProvider }
export type { ElasticpathProvider } export type { ElasticpathProvider }
export const elasticpathConfig: CommerceConfig = { export const CommerceProvider = getCommerceProvider(elasticpathProvider)
locale: 'en-us', export const useCommerce = () => useCoreCommerce<ElasticpathProvider>()
cartCookie: 'bc_cartId',
}
export type ElasticpathConfig = Partial<CommerceConfig>
export type ElasticpathProps = {
children?: ReactNode
locale: string
} & ElasticpathConfig
export function CommerceProvider({ children, ...config }: ElasticpathProps) {
return (
<CoreCommerceProvider
provider={elasticpathProvider}
config={{ ...elasticpathConfig, ...config }}
>
{children}
</CoreCommerceProvider>
)
}
export const useCommerce = () => useCoreCommerce<ElasticpathProvider>()

View File

@ -14,6 +14,10 @@ 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 { handler as useCheckout } from './checkout/use-checkout'
import { handler as useCards } from './customer/card/use-cards'
import { handler as useAddresses } from './customer/address/use-addresses'
import {fetcher} from './fetcher' import {fetcher} from './fetcher'
export const elasticpathProvider = { export const elasticpathProvider = {
@ -26,7 +30,18 @@ export const elasticpathProvider = {
useAddItem: useWishlistAddItem, useAddItem: useWishlistAddItem,
useRemoveItem: useWishlistRemoveItem, useRemoveItem: useWishlistRemoveItem,
}, },
customer: { useCustomer }, checkout: {
useCheckout,
},
customer: {
useCustomer,
card: {
useCards
},
address: {
useAddresses
}
},
products: { useSearch }, products: { useSearch },
auth: { useLogin, useLogout, useSignup }, auth: { useLogin, useLogout, useSignup },
} }