fix not found issue

Signed-off-by: Benny Samir Hierl <bennysamir@posteo.de>
This commit is contained in:
Benny Samir Hierl 2022-02-06 13:31:57 +01:00
parent 0e7cd01428
commit ea60f2b6eb
3 changed files with 21 additions and 8 deletions

View file

@ -1,6 +1,7 @@
import axios, { AxiosInstance, AxiosRequestConfig } from 'axios' import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'
import { apiConfig } from '@/config' import { apiConfig } from '@/config'
import { ref } from 'vue' import { ref } from 'vue'
import router from '../router'
const isLoading = ref(false) const isLoading = ref(false)
const error = ref(null) const error = ref(null)
@ -11,7 +12,7 @@ const config: AxiosRequestConfig = {
const client: AxiosInstance = axios.create(config) const client: AxiosInstance = axios.create(config)
client.interceptors.request.use( export const requestInterceptor = client.interceptors.request.use(
function (config) { function (config) {
isLoading.value = true isLoading.value = true
error.value = null error.value = null
@ -24,14 +25,19 @@ client.interceptors.request.use(
} }
) )
client.interceptors.response.use( export const responseInterceptor = client.interceptors.response.use(
function (response) { function (response) {
isLoading.value = false isLoading.value = false
return response return response
}, },
function (err) { function (err) {
isLoading.value = false isLoading.value = false
error.value = err if (err.response?.status === 404) {
router.push({ name: 'notFound' })
err.ignore = true
} else {
error.value = err
}
return Promise.reject(err) return Promise.reject(err)
} }
) )

View file

@ -1,13 +1,20 @@
import useAxios from '@/composables/useAxios' import useAxios from '@/composables/useAxios'
import { Wishlist, WishlistItem } from '@/types' import { Wishlist, WishlistItem } from '@/types'
import { AxiosError } from 'axios'
import { ref } from 'vue' import { ref } from 'vue'
const { client } = useAxios() const { client } = useAxios()
const list = ref<Wishlist | null>(null) const list = ref<Wishlist | null>(null)
const fetch = async (slugText: string): Promise<void> => { const fetch = async (slugText: string): Promise<void> => {
const { data } = await client.get(`/wishlist/${slugText}`) try {
list.value = data const { data } = await client.get(`/wishlist/${slugText}`)
list.value = data
} catch (e: any) {
if (e.isAxiosError && !(<AxiosError>e.ignore)) {
throw e
}
}
} }
const updateItem = async (item: WishlistItem): Promise<void> => { const updateItem = async (item: WishlistItem): Promise<void> => {

View file

@ -1,6 +1,6 @@
import { createRouter, createWebHistory } from 'vue-router' import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue' import HomeView from '@/views/HomeView.vue'
import DetailView from '../views/DetailView.vue' import DetailView from '@/views/DetailView.vue'
const router = createRouter({ const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL), history: createWebHistory(import.meta.env.BASE_URL),
@ -18,7 +18,7 @@ const router = createRouter({
{ {
name: 'notFound', name: 'notFound',
path: '/:pathMatch(.*)*', path: '/:pathMatch(.*)*',
component: () => import('../views/NotFound.vue'), component: () => import('@/views/NotFound.vue'),
}, },
], ],
}) })