2024-04-15 19:39:03 +02:00
|
|
|
import amplitude from "amplitude-js"
|
2023-12-09 15:47:03 +01:00
|
|
|
|
2024-01-03 17:38:11 +01:00
|
|
|
export const useAmplitude = () => {
|
2024-01-03 19:03:45 +01:00
|
|
|
const config = useRuntimeConfig()
|
|
|
|
|
const amplitudeCode = config.public.amplitudeCode
|
2024-04-15 19:39:03 +02:00
|
|
|
const amplitudeClient = amplitudeCode ? amplitude.getInstance() : null
|
2023-12-16 19:21:03 +01:00
|
|
|
if (amplitudeClient) {
|
2024-01-03 17:38:11 +01:00
|
|
|
amplitudeClient.init(amplitudeCode)
|
2023-12-16 19:21:03 +01:00
|
|
|
}
|
2023-12-09 15:47:03 +01:00
|
|
|
|
|
|
|
|
const logEvent = function (eventName, eventData) {
|
2024-04-15 19:39:03 +02:00
|
|
|
if (!config.public.env === "production" || !amplitudeClient) {
|
|
|
|
|
console.log("[DEBUG] Amplitude logged event:", eventName, eventData)
|
2024-01-03 19:03:45 +01:00
|
|
|
return
|
2023-12-09 15:47:03 +01:00
|
|
|
}
|
|
|
|
|
|
2024-04-15 19:39:03 +02: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) {
|
2023-12-16 19:21:03 +01:00
|
|
|
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,
|
2024-04-15 19:39:03 +02:00
|
|
|
enterprise_subscription: user.has_enterprise_subscription,
|
2023-12-09 15:47:03 +01:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
logEvent,
|
|
|
|
|
setUser,
|
2024-04-15 19:39:03 +02:00
|
|
|
amplitude: amplitudeClient,
|
2023-12-09 15:47:03 +01:00
|
|
|
}
|
|
|
|
|
}
|