import { useCallback } from 'react'; import { InteractionManager } from 'react-native'; import Analytics from '../../../../core/Analytics/Analytics'; import { ANALYTICS_EVENTS_V2 } from '../../../../util/analyticsV2'; import { AnalyticsEvents } from '../types'; const AnonymousEvents: (keyof AnalyticsEvents)[] = [ 'ONRAMP_REGION_SELECTED', 'ONRAMP_PAYMENT_METHOD_SELECTED', 'ONRAMP_QUOTES_REQUESTED', 'ONRAMP_QUOTES_RECEIVED', 'ONRAMP_PROVIDER_SELECTED', 'ONRAMP_PURCHASE_COMPLETED', 'ONRAMP_PURCHASE_FAILED', 'ONRAMP_PROVIDER_DETAILS_VIEWED', 'ONRAMP_QUOTE_ERROR', ]; export function trackEvent( eventType: T, params: AnalyticsEvents[T], ) { const event = ANALYTICS_EVENTS_V2[eventType]; const anonymous = AnonymousEvents.includes(eventType); InteractionManager.runAfterInteractions(() => { if (anonymous) { Analytics.trackEventWithParameters(event, {}); Analytics.trackEventWithParameters(event, params, true); } else { Analytics.trackEventWithParameters(event, params); } }); } function useAnalytics() { const trackEventHook = useCallback( ( eventType: T, params: AnalyticsEvents[T], ) => { trackEvent(eventType, params); }, [], ); return trackEventHook; } export default useAnalytics;