From 12981349af2c2197cf2d08ae2f6a0411d47ede45 Mon Sep 17 00:00:00 2001 From: Kevin He Date: Mon, 18 Mar 2024 11:59:04 -0700 Subject: [PATCH] extract handleApiError --- .../commerce-sdk-react/src/hooks/useQuery.ts | 16 +++++----------- packages/commerce-sdk-react/src/hooks/utils.ts | 12 ++++++++++++ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/packages/commerce-sdk-react/src/hooks/useQuery.ts b/packages/commerce-sdk-react/src/hooks/useQuery.ts index aaa2acb238..2795ab021a 100644 --- a/packages/commerce-sdk-react/src/hooks/useQuery.ts +++ b/packages/commerce-sdk-react/src/hooks/useQuery.ts @@ -16,7 +16,7 @@ import { NullableParameters, OmitNullableParameters } from './types' -import {hasAllKeys} from './utils' +import {hasAllKeys, handleApiError} from './utils' import {onClient} from '../utils' /** @@ -48,16 +48,10 @@ export const useQuery = { - try { - return await authenticatedMethod(apiOptions as Options) - } catch (e) { - if (typeof e === 'object' && e !== null && 'response' in e) { - const json = await (e.response as Response).json() - throw json - } - throw e - } + const wrappedMethod = () => { + return handleApiError(() => { + return authenticatedMethod(apiOptions as Options) + }) } return useReactQuery(hookConfig.queryKey, wrappedMethod, { enabled: diff --git a/packages/commerce-sdk-react/src/hooks/utils.ts b/packages/commerce-sdk-react/src/hooks/utils.ts index d85ff1fcb9..0c415cfd33 100644 --- a/packages/commerce-sdk-react/src/hooks/utils.ts +++ b/packages/commerce-sdk-react/src/hooks/utils.ts @@ -138,3 +138,15 @@ export const getCustomKeys = (obj: T) => { } return Object.keys(obj).filter((key: string): key is `c_${string}` => key.startsWith('c_')) } + +export const handleApiError = async (func: () => Promise): Promise => { + try { + return await func() + } catch (e) { + if (typeof e === 'object' && e !== null && 'response' in e) { + const json = await (e.response as Response).json() + throw json + } + throw e + } +}