From add9d685f9ee718c7e0ec6c14a6b3d8dc1daee8a Mon Sep 17 00:00:00 2001 From: jlpereira Date: Mon, 7 Aug 2023 20:42:51 -0300 Subject: [PATCH] Redirect 404 when OTU or Taxon name doesnt exist. Catch distribution error --- src/modules/404/router/index.js | 1 + src/modules/otus/helpers/useOtuPageRequest.js | 10 +++++++--- src/modules/otus/store/store.js | 11 +++++++++-- src/modules/otus/views/Index.vue | 9 +++++++-- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/modules/404/router/index.js b/src/modules/404/router/index.js index 63ea480..9f9901b 100644 --- a/src/modules/404/router/index.js +++ b/src/modules/404/router/index.js @@ -2,5 +2,6 @@ import notFound from '../view/index.vue' export default { path: '/:pathMatch(.*)*', + name: 'notFound', component: notFound } diff --git a/src/modules/otus/helpers/useOtuPageRequest.js b/src/modules/otus/helpers/useOtuPageRequest.js index f426305..3c72698 100644 --- a/src/modules/otus/helpers/useOtuPageRequest.js +++ b/src/modules/otus/helpers/useOtuPageRequest.js @@ -4,9 +4,13 @@ export function useOtuPageRequest(key, requestFunction) { const store = useOtuPageRequestStore() const request = requestFunction() - request.then((response) => { - store.setRequest(key, response) - }) + request + .then((response) => { + store.setRequest(key, response) + }) + .catch((error) => { + store.setRequest(key, error.response) + }) return request } diff --git a/src/modules/otus/store/store.js b/src/modules/otus/store/store.js index 61ba11d..5be2d02 100644 --- a/src/modules/otus/store/store.js +++ b/src/modules/otus/store/store.js @@ -52,10 +52,17 @@ export const useOtuStore = defineStore('otuStore', { requestStore.$reset() - await this.loadOtu(otuId) - await this.loadTaxon(this.otu.taxon_name_id) + try { + await this.loadOtu(otuId) + await this.loadTaxon(this.otu.taxon_name_id) + } catch (error) { + return false + } + await this.loadCatalog(this.otu.taxon_name_id) await this.loadTaxonomy(otuId) + + return true }, async loadImages(otuId) { diff --git a/src/modules/otus/views/Index.vue b/src/modules/otus/views/Index.vue index b315512..bd2c742 100644 --- a/src/modules/otus/views/Index.vue +++ b/src/modules/otus/views/Index.vue @@ -132,8 +132,13 @@ onBeforeUnmount(() => { async function loadInitialData() { store.$reset() - await store.loadInit(route.params.id) - updateMetadata() + const success = await store.loadInit(route.params.id) + + if (success) { + updateMetadata() + } else { + router.replace({ name: 'notFound' }) + } } function updateMetadata() {