add logout hook

This commit is contained in:
DuvCharles 2022-12-14 15:55:40 +01:00 committed by Hadrien Lucas
parent 8a0395050f
commit 5b29bf8c78
2 changed files with 23 additions and 13 deletions

View File

@ -1,17 +1,24 @@
import { MutationHook } from '@vercel/commerce/utils/types' import { MutationHook } from '@vercel/commerce/utils/types'
import useLogout, { UseLogout } from '@vercel/commerce/auth/use-logout' import useLogout, { UseLogout } from '@vercel/commerce/auth/use-logout'
import { useCustomer } from '../customer'
import { useCallback } from 'react'
import { setCustomerToken } from '../utils/token/customer-token'
export default useLogout as UseLogout<typeof handler> export default useLogout as UseLogout<typeof handler>
export const handler: MutationHook<any> = { export const handler: MutationHook<any> = {
fetchOptions: { fetchOptions: {
query: '', url: '',
}, },
async fetcher() { useHook: () => () => {
return null const { mutate } = useCustomer()
return useCallback(
async function logout() {
setCustomerToken(null)
await mutate()
},
[mutate]
)
}, },
useHook:
({ fetch }) =>
() =>
async () => {},
} }

View File

@ -4,6 +4,7 @@ import useCustomer, {
} from '@vercel/commerce/customer/use-customer' } from '@vercel/commerce/customer/use-customer'
import { getCustomerRoute } from '../utils/token/customer-route' import { getCustomerRoute } from '../utils/token/customer-route'
import { normalizeCustomer } from '../utils/normalize/normalize-customer' import { normalizeCustomer } from '../utils/normalize/normalize-customer'
import { getCustomerToken } from '../utils/token/customer-token'
import { CustomerHook } from '@vercel/commerce/types/customer' import { CustomerHook } from '@vercel/commerce/types/customer'
export default useCustomer as UseCustomer<typeof handler> export default useCustomer as UseCustomer<typeof handler>
@ -14,12 +15,14 @@ export const handler: SWRHook<CustomerHook> = {
method: 'GET', method: 'GET',
}, },
fetcher: async ({ options, fetch }) => { fetcher: async ({ options, fetch }) => {
const syliusCustomer = await fetch({ if (getCustomerToken()) {
url: getCustomerRoute() ?? '', const syliusCustomer = await fetch({
method: options.method, url: getCustomerRoute() ?? '',
}) method: options.method,
const customer = normalizeCustomer(syliusCustomer) })
return customer return normalizeCustomer(syliusCustomer)
}
return null
}, },
useHook: useHook:
({ useData }) => ({ useData }) =>