Sink-UrlShortener/utils/api.ts
ccbikai 05eb3bfca3 feat: enhance error handling for unauthorized API calls
Implements automatic token removal and redirection to login upon 401 error status, improving user experience and security.
2024-08-20 21:24:32 +08:00

20 lines
553 B
TypeScript

import { defu } from 'defu'
import { toast } from 'vue-sonner'
export function useAPI(api: string, options?: object): Promise<unknown> {
return $fetch(api, defu(options || {}, {
headers: {
Authorization: `Bearer ${localStorage.getItem('SinkSiteToken') || ''}`,
},
})).catch((error) => {
if (error?.status === 401) {
localStorage.removeItem('SinkSiteToken')
navigateTo('/dashboard/login')
}
if (error?.data?.statusMessage) {
toast(error?.data?.statusMessage)
}
return Promise.reject(error)
})
}