From 5b29bf8c7872214e6a87bc88274e28d2d1fa05f2 Mon Sep 17 00:00:00 2001 From: DuvCharles Date: Wed, 14 Dec 2022 15:55:40 +0100 Subject: [PATCH] add logout hook --- packages/sylius/src/auth/use-logout.tsx | 21 ++++++++++++------- packages/sylius/src/customer/use-customer.tsx | 15 +++++++------ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/packages/sylius/src/auth/use-logout.tsx b/packages/sylius/src/auth/use-logout.tsx index 4e74908f3..07ab41de8 100644 --- a/packages/sylius/src/auth/use-logout.tsx +++ b/packages/sylius/src/auth/use-logout.tsx @@ -1,17 +1,24 @@ import { MutationHook } from '@vercel/commerce/utils/types' 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 export const handler: MutationHook = { fetchOptions: { - query: '', + url: '', }, - async fetcher() { - return null + useHook: () => () => { + const { mutate } = useCustomer() + + return useCallback( + async function logout() { + setCustomerToken(null) + await mutate() + }, + [mutate] + ) }, - useHook: - ({ fetch }) => - () => - async () => {}, } diff --git a/packages/sylius/src/customer/use-customer.tsx b/packages/sylius/src/customer/use-customer.tsx index d56f99f62..9b3a83f6f 100644 --- a/packages/sylius/src/customer/use-customer.tsx +++ b/packages/sylius/src/customer/use-customer.tsx @@ -4,6 +4,7 @@ import useCustomer, { } from '@vercel/commerce/customer/use-customer' import { getCustomerRoute } from '../utils/token/customer-route' import { normalizeCustomer } from '../utils/normalize/normalize-customer' +import { getCustomerToken } from '../utils/token/customer-token' import { CustomerHook } from '@vercel/commerce/types/customer' export default useCustomer as UseCustomer @@ -14,12 +15,14 @@ export const handler: SWRHook = { method: 'GET', }, fetcher: async ({ options, fetch }) => { - const syliusCustomer = await fetch({ - url: getCustomerRoute() ?? '', - method: options.method, - }) - const customer = normalizeCustomer(syliusCustomer) - return customer + if (getCustomerToken()) { + const syliusCustomer = await fetch({ + url: getCustomerRoute() ?? '', + method: options.method, + }) + return normalizeCustomer(syliusCustomer) + } + return null }, useHook: ({ useData }) =>