Files
pichunt/app/plugins/matomo.client.ts
T
2025-08-16 12:53:00 +02:00

44 lines
1.2 KiB
TypeScript

// @ts-expect-error
import VueMatomo from 'vue-matomo';
export default defineNuxtPlugin((nuxtApp) => {
const { user } = useUserSession();
nuxtApp.vueApp.use(VueMatomo, {
host: 'https://analytics.syma.dev',
siteId: 12,
router: nuxtApp.$router,
trackInitialView: true,
preInitActions: [
// Respect DNT
['setDoNotTrack', true],
user.value ? ['setUserId', user.value.id.toString()] : ['resetUserId'],
user.value
? ['setCustomDimension', 1, user.value.role]
: ['setCustomDimension', 1, 'guest']
]
});
// Update user state
watch(user, (u) => {
if (u) {
// Add users id to visit
window._paq?.push(['setUserId', u.id.toString()]);
// Add users role to visit
window._paq?.push(['setCustomDimension', 1, u.role]);
window._paq?.push(['trackPageView']);
} else {
window._paq?.push(['resetUserId']);
window._paq?.push(['setCustomDimension', 1, 'guest']);
window._paq?.push(['appendToTrackingUrl', 'new_visit=1']);
window._paq?.push(['trackPageView']);
window._paq?.push(['appendToTrackingUrl', '']);
}
});
});
declare global {
interface Window {
_paq?: any[];
}
}