google-analytics plugin and plugin review

This commit is contained in:
María
2025-08-22 13:02:48 +02:00
parent 500dd1efbe
commit 541e922ff5
7 changed files with 72 additions and 68 deletions

View File

@@ -1,48 +0,0 @@
// plugins/api.ts
import { useAuthStore } from '~/stores/auth'
export default defineNuxtPlugin((nuxtApp) => {
const auth = useAuthStore()
// Función personalizada para hacer requests
const apiFetch = async (url: string, options: any = {}) => {
try {
const res = await $fetch(url, {
baseURL: useRuntimeConfig().public.apiBase,
credentials: 'include', // para enviar cookies si es necesario
headers: {
...(options.headers || {}),
...(auth.access ? { Authorization: `Bearer ${auth.access}` } : {}),
},
...options,
})
return res
} catch (error: any) {
// Si no es 401, relanzamos el error
if (error?.status !== 401) throw error
// Si es el endpoint de refresh, cerramos sesión
if (url.includes('refresh')) {
auth.logout()
return navigateTo('/login')
}
// Usuario inactivo
if (error?.data?.code === 'user_inactive') {
auth.logout()
return navigateTo('/login')
}
// Intentar refresh
try {
await auth.refresh()
return await apiFetch(url, options) // reintentar la petición original
} catch {
return navigateTo({ name: 'index', query: { redirected: 'true' } })
}
}
}
// Inyectar como $api
nuxtApp.provide('api', apiFetch)
})

View File

@@ -0,0 +1,19 @@
// TODO: Review if its OK. https://matteo-gabriele.gitbook.io/vue-gtag/migration-v2-to-v3
import { configure } from 'vue-gtag'
import { useRouter } from 'vue-router'
export default defineNuxtPlugin(() => {
const config = useRuntimeConfig()
const router = useRouter()
if (config.public.googleAnalyticsId) {
configure({
tagId: config.public.googleAnalyticsId,
appName: 'latienda.coop',
pageTracker: {
router,
useScreenview: true,
},
})
}
})