From 3e692413427f59c87f9995efd84dd986efad7545 Mon Sep 17 00:00:00 2001 From: Baroshem Date: Wed, 10 Mar 2021 11:27:59 +0100 Subject: [PATCH 1/9] bug: add try catch to app.post in createServer --- packages/core/middleware/src/createServer.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/core/middleware/src/createServer.ts b/packages/core/middleware/src/createServer.ts index 172b3d305b..763894407d 100644 --- a/packages/core/middleware/src/createServer.ts +++ b/packages/core/middleware/src/createServer.ts @@ -37,9 +37,15 @@ function createServer (config: MiddlewareConfig): Express { const createApiClient = apiClient.createApiClient.bind({ middleware: middlewareContext }); const apiClientInstance = createApiClient(configuration); const apiFunction = apiClientInstance.api[functionName]; - const platformResponse = await apiFunction(...req.body); + try { + const platformResponse = await apiFunction(...req.body); - res.send(platformResponse); + res.send(platformResponse); + } catch (error) { + res.status(500); + + res.send(error); + } }); consola.success('Middleware created!'); From f460e8a4e0592513c45005760ef4ce1b121675b0 Mon Sep 17 00:00:00 2001 From: Baroshem Date: Wed, 10 Mar 2021 11:28:58 +0100 Subject: [PATCH 2/9] bug: change error assignement in useUserFactory --- packages/core/core/src/factories/useUserFactory.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/core/src/factories/useUserFactory.ts b/packages/core/core/src/factories/useUserFactory.ts index cc65f90cb4..7848bcbcd8 100644 --- a/packages/core/core/src/factories/useUserFactory.ts +++ b/packages/core/core/src/factories/useUserFactory.ts @@ -63,7 +63,7 @@ export const useUserFactory = Date: Wed, 10 Mar 2021 11:30:15 +0100 Subject: [PATCH 3/9] bug: VsfShippingProvider to show country error --- .../theme/components/Checkout/VsfShippingProvider.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/commercetools/theme/components/Checkout/VsfShippingProvider.vue b/packages/commercetools/theme/components/Checkout/VsfShippingProvider.vue index f9761dcb07..86c5d868c2 100644 --- a/packages/commercetools/theme/components/Checkout/VsfShippingProvider.vue +++ b/packages/commercetools/theme/components/Checkout/VsfShippingProvider.vue @@ -12,6 +12,9 @@
{{ $t('There was some error while trying to select this shipping method. We are sorry, please try with different shipping method or later.') }}
+
+ {{ $t('There are no shipping methods available for this country. We are sorry, please try with different country or later.') }} +
Date: Wed, 10 Mar 2021 11:42:33 +0100 Subject: [PATCH 4/9] bug: add changelogs --- packages/core/docs/changelog/5463.js | 8 ++++++++ packages/core/docs/changelog/5508.js | 15 +++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 packages/core/docs/changelog/5463.js create mode 100644 packages/core/docs/changelog/5508.js diff --git a/packages/core/docs/changelog/5463.js b/packages/core/docs/changelog/5463.js new file mode 100644 index 0000000000..bb7d30ae7c --- /dev/null +++ b/packages/core/docs/changelog/5463.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'Fix VsfShippingProvider to correctly show errors related to no shipping methods available for certain country', + link: 'https://github.com/vuestorefront/vue-storefront/issues/5463', + isBreaking: false, + breakingChanges: [], + author: 'Baroshem', + linkToGitHubAccount: 'https://github.com/Baroshem' +}; diff --git a/packages/core/docs/changelog/5508.js b/packages/core/docs/changelog/5508.js new file mode 100644 index 0000000000..e6b62e8101 --- /dev/null +++ b/packages/core/docs/changelog/5508.js @@ -0,0 +1,15 @@ +module.exports = { + description: 'Fix infinite loading for login and register by implementing error handling in core module and in LoginModal', + link: 'https://github.com/vuestorefront/vue-storefront/issues/5508', + isBreaking: true, + breakingChanges: [ + { + module: 'core/middleware, LoginModal', + before: 'There was no error handling and thats why the infinite loading was appearing', + after: 'Errors are handled immediately', + comment: 'add try/catch to middleware, set more appriopriate value to err.value in useUserFactory, and implement error handling in LoginModal' + } + ], + author: 'Baroshem', + linkToGitHubAccount: 'https://github.com/Baroshem' +}; From 5e5f7bd59463639d84af27db30d8e53af5315732 Mon Sep 17 00:00:00 2001 From: Baroshem Date: Wed, 10 Mar 2021 14:34:47 +0100 Subject: [PATCH 5/9] bug: add || err to make unit test work again --- packages/core/core/src/factories/useUserFactory.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/core/src/factories/useUserFactory.ts b/packages/core/core/src/factories/useUserFactory.ts index 7848bcbcd8..2f1dc20860 100644 --- a/packages/core/core/src/factories/useUserFactory.ts +++ b/packages/core/core/src/factories/useUserFactory.ts @@ -63,7 +63,7 @@ export const useUserFactory = Date: Mon, 22 Mar 2021 08:57:30 +0100 Subject: [PATCH 6/9] bug: add resetError method in useUserFactory --- packages/core/core/src/factories/useUserFactory.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/core/core/src/factories/useUserFactory.ts b/packages/core/core/src/factories/useUserFactory.ts index 2f1dc20860..010d15b545 100644 --- a/packages/core/core/src/factories/useUserFactory.ts +++ b/packages/core/core/src/factories/useUserFactory.ts @@ -41,6 +41,7 @@ export const useUserFactory = { Logger.debug('useUserFactory.updateUser', providedUser); + resetErrorValue(); try { loading.value = true; @@ -79,7 +80,7 @@ export const useUserFactory = { Logger.debug('useUserFactory.logout'); + resetErrorValue(); try { await _factoryParams.logOut(); @@ -101,6 +103,7 @@ export const useUserFactory = { Logger.debug('useUserFactory.changePassword', { currentPassword: mask(params.current), newPassword: mask(params.new) }); + resetErrorValue(); try { loading.value = true; @@ -120,6 +123,7 @@ export const useUserFactory = { Logger.debug('useUserFactory.load'); + resetErrorValue(); try { loading.value = true; From 04ca18c3fd77bdbc4c6873e7214c7b76bd385bbc Mon Sep 17 00:00:00 2001 From: Baroshem Date: Thu, 11 Mar 2021 09:19:18 +0100 Subject: [PATCH 7/9] bug: handle login->register flow and fix errors --- packages/core/nuxt-theme-module/theme/components/LoginModal.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/nuxt-theme-module/theme/components/LoginModal.vue b/packages/core/nuxt-theme-module/theme/components/LoginModal.vue index 6023f486ce..b7f180bb8d 100644 --- a/packages/core/nuxt-theme-module/theme/components/LoginModal.vue +++ b/packages/core/nuxt-theme-module/theme/components/LoginModal.vue @@ -216,6 +216,7 @@ export default { }; const handleForm = (fn) => async () => { + resetErrorValues(); await fn({ user: form.value }); resetErrorValues(); From 2de98c9d39bb4140f19fd479c69177921689f6b6 Mon Sep 17 00:00:00 2001 From: Baroshem Date: Mon, 22 Mar 2021 10:39:33 +0100 Subject: [PATCH 8/9] bug: move error handling from factory to modal --- .../core/core/src/factories/useUserFactory.ts | 4 +-- .../theme/components/LoginModal.vue | 30 +++++++++++-------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/packages/core/core/src/factories/useUserFactory.ts b/packages/core/core/src/factories/useUserFactory.ts index 010d15b545..1aed05947c 100644 --- a/packages/core/core/src/factories/useUserFactory.ts +++ b/packages/core/core/src/factories/useUserFactory.ts @@ -64,7 +64,7 @@ export const useUserFactory =
- {{ error.login.graphQLErrors[0].message || error.login.message }} + {{ error.login }}
- {{ error.register.graphQLErrors[0].message || error.register.message }} + {{ error.register }}
{ - if (isLoginModalOpen) { - form.value = {}; - } - }); - const error = reactive({ login: null, register: null @@ -210,6 +204,13 @@ export default { error.register = null; }; + watch(isLoginModalOpen, () => { + if (isLoginModalOpen) { + form.value = {}; + resetErrorValues(); + } + }); + const setIsLoginValue = (value) => { resetErrorValues(); isLogin.value = value; @@ -218,12 +219,17 @@ export default { const handleForm = (fn) => async () => { resetErrorValues(); await fn({ user: form.value }); - resetErrorValues(); - const hasUserErrors = userError.value.register || userError.value.login; + const registerGraphQLError = userError.value.register?.response?.data; + const loginGraphQLError = userError.value.login?.response?.data; + + const hasUserErrors = (registerGraphQLError || userError.value.register) || (loginGraphQLError || userError.value.login); if (hasUserErrors) { - error.login = userError.value.login; - error.register = userError.value.register; + const loginGraphQLErrorMessage = loginGraphQLError?.graphQLErrors[0]?.message; + const registerGraphQLErrorMessage = registerGraphQLError?.graphQLErrors[0]?.message; + + error.login = loginGraphQLErrorMessage || userError.value.login?.message; + error.register = registerGraphQLErrorMessage || userError.value.register?.message; return; } toggleLoginModal(); From 22628c141fa4fd6aa973dc6e70ab41d390d96fae Mon Sep 17 00:00:00 2001 From: Baroshem Date: Mon, 22 Mar 2021 11:27:00 +0100 Subject: [PATCH 9/9] bug: move error handling to ct integration --- .../composables/src/useUser/authenticate.ts | 2 +- .../theme/components/LoginModal.vue | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/commercetools/composables/src/useUser/authenticate.ts b/packages/commercetools/composables/src/useUser/authenticate.ts index 292e0cf0b1..377e977d7d 100644 --- a/packages/commercetools/composables/src/useUser/authenticate.ts +++ b/packages/commercetools/composables/src/useUser/authenticate.ts @@ -10,6 +10,6 @@ export const authenticate = async (userData: UserData, fn) => { } catch (err) { err.message = err?.graphQLErrors?.[0]?.message || err.message; Logger.error('useUser.authenticate', err.message); - throw err; + throw err?.response?.data?.graphQLErrors?.[0] || err; } }; diff --git a/packages/core/nuxt-theme-module/theme/components/LoginModal.vue b/packages/core/nuxt-theme-module/theme/components/LoginModal.vue index bfb641d834..f76ad20c99 100644 --- a/packages/core/nuxt-theme-module/theme/components/LoginModal.vue +++ b/packages/core/nuxt-theme-module/theme/components/LoginModal.vue @@ -220,16 +220,10 @@ export default { resetErrorValues(); await fn({ user: form.value }); - const registerGraphQLError = userError.value.register?.response?.data; - const loginGraphQLError = userError.value.login?.response?.data; - - const hasUserErrors = (registerGraphQLError || userError.value.register) || (loginGraphQLError || userError.value.login); + const hasUserErrors = userError.value.register || userError.value.login; if (hasUserErrors) { - const loginGraphQLErrorMessage = loginGraphQLError?.graphQLErrors[0]?.message; - const registerGraphQLErrorMessage = registerGraphQLError?.graphQLErrors[0]?.message; - - error.login = loginGraphQLErrorMessage || userError.value.login?.message; - error.register = registerGraphQLErrorMessage || userError.value.register?.message; + error.login = userError.value.login?.message; + error.register = userError.value.register?.message; return; } toggleLoginModal();