keepyourmouthshut/Customer App/src/utils/analytics.js

66 lines
1.9 KiB
JavaScript

import * as Amplitude from 'expo-analytics-amplitude'
import { normalizeTrackingOptions } from './analyticsUtils'
import getEnvVars from '../../environment'
import { getTrackingPermissions } from './useAppTrackingTransparency'
const { AMPLITUDE_API_KEY } = getEnvVars()
let isInitialized = false
export const events = {
USER_LOGGED_IN: 'USER_LOGGED_IN',
USER_LOGGED_OUT: 'USER_LOGGED_OUT',
USER_CREATED_ACCOUNT: 'USER_CREATED_ACCOUNT',
// USER_RESET_PASSWORD: 'USER_RESET_PASSWORD',
// USER_LINKED_SOCIAL: 'USER_LINKED_SOCIAL',
// USER_UPDATED_EMAIL: 'USER_UPDATED_EMAIL',
// USER_UPDATED_PROFILE: 'USER_UPDATED_PROFILE',
// USER_UPDATED_LINKS: 'USER_UPDATED_SOCIAL_LINKS',
// USER_UPDATED_LIKE: 'USER_UPDATED_LIKE',
// USER_UPDATED_PRIVACY: 'USER_UPDATED_PRIVACY',
// USER_REMOVED_PROJECT: 'USER_REMOVED_PROJECT',
// USER_OPENED_CREATION: 'USER_OPENED_CREATION',
// USER_UPDATED_SETTINGS: 'USER_UPDATED_SETTINGS',
USER_PLACED_ORDER: 'USER_PLACED_ORDER'
}
export async function initialize() {
const trackingStatus = await getTrackingPermissions()
if (isInitialized || !AMPLITUDE_API_KEY || trackingStatus !== 'granted') {
return
}
await Amplitude.initializeAsync(AMPLITUDE_API_KEY)
isInitialized = true
}
export async function identify(id, options) {
initialize()
const properties = normalizeTrackingOptions(options)
if (id) {
await Amplitude.setUserIdAsync(id)
if (properties) {
await Amplitude.setUserPropertiesAsync(properties)
}
} else {
await Amplitude.clearUserPropertiesAsync()
}
}
export async function track(event, options) {
initialize()
const properties = normalizeTrackingOptions(options)
if (properties) {
await Amplitude.logEventWithPropertiesAsync(event, properties)
} else {
await Amplitude.logEventAsync(event)
}
}
export default {
events,
initialize,
identify,
track
}