opnform-host-nginx/client/composables/useAmplitude.js

51 lines
1.2 KiB
JavaScript
Raw Normal View History

import amplitude from 'amplitude-js'
2023-12-09 15:47:03 +01:00
let amplitudeClient = null
export function useAmplitude () {
const config = useRuntimeConfig()
const amplitudeCode = config.public.amplitudeCode
if (!amplitudeClient && amplitudeCode && !process.server) {
amplitudeClient = amplitude.getInstance()
amplitudeClient.init(amplitudeCode, null, {
includeReferrer: true,
includeUtm: true,
includeGclid: true,
includeFbclid: true
})
2023-12-16 19:21:03 +01:00
}
2023-12-09 15:47:03 +01:00
const logEvent = function (eventName, eventData) {
if (!config.public.env === 'production') {
console.log('[DEBUG] Amplitude logged event:', eventName, eventData)
2023-12-09 15:47:03 +01:00
}
if (!amplitudeClient) {
return
2023-12-09 15:47:03 +01:00
}
if (eventData && typeof eventData !== 'object')
throw new Error('Amplitude event value must be an object.')
2023-12-09 15:47:03 +01:00
amplitudeClient.logEvent(eventName, eventData)
}
const setUser = function (user) {
if (!amplitudeClient) {
return
}
2023-12-09 15:47:03 +01:00
amplitudeClient.setUserId(user.id)
amplitudeClient.setUserProperties({
2023-12-16 19:21:03 +01:00
email: user.email,
subscribed: user.is_subscribed,
enterprise_subscription: user.has_enterprise_subscription
2023-12-09 15:47:03 +01:00
})
}
return {
logEvent,
setUser,
amplitude: amplitudeClient
2023-12-09 15:47:03 +01:00
}
}