Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/tracking / src / helpers / dispatchTrack.js
Size: Mime:
import { trackAmplitude } from '../amplitude';
import { trackGa } from '../googleAnalytics';
import { mapTrackingDataToAmplitude } from '../amplitude/mapTrackingDataToAmplitude';
import { mapTrackingDataToGoogleAnalytics } from '../googleAnalytics/helpers/mapTrackingDataToGoogleAnalytics';
import { validateTrackingData } from './validateTrackingData';

/**
 * Dispatcher for trackers APIs
 *
 * @param {Object} trackingAttributes - An object produced by getTrackingDataObject function
 * @return {undefined}
 */
const dispatchTrack = async ({ trackingData }) => {
  const errors = validateTrackingData(trackingData);
  if (errors.length > 0) {
    throw errors;
  }

  const { services } = trackingData;

  if (services.ga) {
    try {
      const destinationData = mapTrackingDataToGoogleAnalytics(trackingData);
      await trackGa(destinationData);
    } catch (e) {
      console.warn('Error on Dispatch: Google Analytics');
      console.error(e);
    }
  }

  if (services.amplitude) {
    try {
      const destinationData = mapTrackingDataToAmplitude(trackingData);
      await trackAmplitude(destinationData);
    } catch (e) {
      console.warn('Error on Dispatch: Amplitude');
      console.error(e);
    }
  }
};

export { dispatchTrack };