Files
SkinbaseNova/resources/js/utils/studioEvents.js

39 lines
1.0 KiB
JavaScript

function csrfToken() {
return document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || ''
}
export function studioSurface(pathname = window.location.pathname) {
return String(pathname || '/studio').split('?')[0] || '/studio'
}
export function studioModule(pathname = window.location.pathname) {
const segments = studioSurface(pathname).split('/').filter(Boolean)
if (segments[0] !== 'studio') {
return null
}
return segments[1] || 'overview'
}
export async function trackStudioEvent(eventType, payload = {}) {
try {
await fetch('/api/studio/events', {
method: 'POST',
credentials: 'same-origin',
keepalive: true,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
'X-CSRF-TOKEN': csrfToken(),
'X-Requested-With': 'XMLHttpRequest',
},
body: JSON.stringify({
event_type: eventType,
...payload,
}),
})
} catch {
// Studio analytics hooks should never block the UI.
}
}