Fix Amplitude: 1 instanciation, track utm

This commit is contained in:
Julien Nahum 2024-05-14 16:24:31 +02:00
parent 1ae0420656
commit a4b7bfdbe4
1 changed files with 24 additions and 13 deletions

View File

@ -1,39 +1,50 @@
import amplitude from "amplitude-js" import amplitude from 'amplitude-js'
export const useAmplitude = () => { let amplitudeClient = null
export function useAmplitude () {
const config = useRuntimeConfig() const config = useRuntimeConfig()
const amplitudeCode = config.public.amplitudeCode const amplitudeCode = config.public.amplitudeCode
const amplitudeClient = amplitudeCode ? amplitude.getInstance() : null if (!amplitudeClient && amplitudeCode && !process.server) {
if (amplitudeClient) { amplitudeClient = amplitude.getInstance()
amplitudeClient.init(amplitudeCode) amplitudeClient.init(amplitudeCode, null, {
includeReferrer: true,
includeUtm: true,
includeGclid: true,
includeFbclid: true
})
} }
const logEvent = function (eventName, eventData) { const logEvent = function (eventName, eventData) {
if (!config.public.env === "production" || !amplitudeClient) { if (!config.public.env === 'production') {
console.log("[DEBUG] Amplitude logged event:", eventName, eventData) console.log('[DEBUG] Amplitude logged event:', eventName, eventData)
}
if (!amplitudeClient) {
return return
} }
if (eventData && typeof eventData !== "object") { if (eventData && typeof eventData !== 'object')
throw new Error("Amplitude event value must be an object.") throw new Error('Amplitude event value must be an object.')
}
amplitudeClient.logEvent(eventName, eventData) amplitudeClient.logEvent(eventName, eventData)
} }
const setUser = function (user) { const setUser = function (user) {
if (!amplitudeClient) return if (!amplitudeClient) {
return
}
amplitudeClient.setUserId(user.id) amplitudeClient.setUserId(user.id)
amplitudeClient.setUserProperties({ amplitudeClient.setUserProperties({
email: user.email, email: user.email,
subscribed: user.is_subscribed, subscribed: user.is_subscribed,
enterprise_subscription: user.has_enterprise_subscription, enterprise_subscription: user.has_enterprise_subscription
}) })
} }
return { return {
logEvent, logEvent,
setUser, setUser,
amplitude: amplitudeClient, amplitude: amplitudeClient
} }
} }