import type { NitroFetchRequest } from 'nitropack' import { callWithNuxt } from '#app' export function $api< T = unknown, R extends NitroFetchRequest = NitroFetchRequest, >( request: Parameters>[0], options?: Partial>[1]>, ) { const nuxtApp = useNuxtApp() const runtimeConfig = useRuntimeConfig() const cookies = useRequestHeaders(['cookie']) return $fetch(request, { ...options, headers: { ...options?.headers, ...cookies, }, retry: false, baseURL: runtimeConfig.public.apiHost as string, credentials: 'include', onResponseError: async ({ response }) => { if (response.status === 401) { nuxtApp.runWithContext(() => { useCookie('session').value = null }) await callWithNuxt(nuxtApp, clearNuxtState, ['user']) await callWithNuxt(nuxtApp, navigateTo, ['/login', { redirectCode: 401 }]) } // setStaticError({ // status: response.status, // message: nuxtApp.$i18n.t('something_went_wrong'), // }); }, }) }