From 420c1aa3fd7119720725ab928c56593f1295536b Mon Sep 17 00:00:00 2001 From: mkucmus Date: Fri, 25 Jun 2021 14:21:08 +0200 Subject: [PATCH 01/11] feat: error interceptor refactor --- .../commons/interfaces/errors/ApiError.ts | 2 +- packages/composables/src/hooks/useUser.ts | 14 +++++------ .../src/components/SwErrorsList.vue | 23 +++++++++++++++---- .../src/components/SwRegister.vue | 10 +++++--- packages/helpers/src/error/index.ts | 2 +- .../src/interceptors/errorInterceptor.ts | 2 +- 6 files changed, 36 insertions(+), 17 deletions(-) diff --git a/packages/commons/interfaces/errors/ApiError.ts b/packages/commons/interfaces/errors/ApiError.ts index 732e542b3..52413790f 100644 --- a/packages/commons/interfaces/errors/ApiError.ts +++ b/packages/commons/interfaces/errors/ApiError.ts @@ -25,6 +25,6 @@ export interface ShopwareApiError extends AxiosError { * @alpha */ export interface ClientApiError { - message: string | ShopwareError[]; + messages: ShopwareError[]; statusCode: number; } diff --git a/packages/composables/src/hooks/useUser.ts b/packages/composables/src/hooks/useUser.ts index 439b1d5d8..9f6944758 100644 --- a/packages/composables/src/hooks/useUser.ts +++ b/packages/composables/src/hooks/useUser.ts @@ -63,8 +63,8 @@ export interface IUseUser { loading: Ref; error: Ref; errors: UnwrapRef<{ - login: string; - register: string[]; + login: ClientApiError; + register: ClientApiError; }>; isLoggedIn: ComputedRef; isCustomerSession: ComputedRef; @@ -131,8 +131,8 @@ export const useUser = (rootContext: ApplicationVueContext): IUseUser => { const loading: Ref = ref(false); const error: Ref = ref(null); const errors: UnwrapRef<{ - login: string; - register: string[]; + login: ShopwareError[]; + register: ShopwareError[]; }> = reactive({ login: "", register: [], @@ -158,7 +158,7 @@ export const useUser = (rootContext: ApplicationVueContext): IUseUser => { return true; } catch (e) { const err: ClientApiError = e; - error.value = err.message; + error.value = err.messages; broadcast(INTERCEPTOR_KEYS.ERROR, { methodName: `[${contextName}][login]`, inputParams: {}, @@ -187,7 +187,7 @@ export const useUser = (rootContext: ApplicationVueContext): IUseUser => { const err: ClientApiError = e; // temporary workaround - get rid of such hacks in the future // TODO: https://github.com/vuestorefront/shopware-pwa/issues/1498 - errors.register = [err.message as string]; + errors.register = err.messages; broadcast(INTERCEPTOR_KEYS.ERROR, { methodName: `[${contextName}][register]`, inputParams: {}, @@ -205,7 +205,7 @@ export const useUser = (rootContext: ApplicationVueContext): IUseUser => { broadcast(INTERCEPTOR_KEYS.USER_LOGOUT); } catch (e) { const err: ClientApiError = e; - error.value = err.message; + error.value = err.messages; broadcast(INTERCEPTOR_KEYS.ERROR, { methodName: `[${contextName}][logout]`, inputParams: {}, diff --git a/packages/default-theme/src/components/SwErrorsList.vue b/packages/default-theme/src/components/SwErrorsList.vue index 1765e8da7..f7b9e2926 100644 --- a/packages/default-theme/src/components/SwErrorsList.vue +++ b/packages/default-theme/src/components/SwErrorsList.vue @@ -1,9 +1,13 @@ @@ -11,6 +15,12 @@ diff --git a/packages/default-theme/src/components/SwRegister.vue b/packages/default-theme/src/components/SwRegister.vue index b03d9910c..7f12059e1 100644 --- a/packages/default-theme/src/components/SwRegister.vue +++ b/packages/default-theme/src/components/SwRegister.vue @@ -1,5 +1,6 @@