Skip to content
Snippets Groups Projects
events.js 1.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • James Long's avatar
    James Long committed
    import asyncStorage from '../../platform/server/asyncStorage';
    import { sha256String } from '../encryption-internals';
    let uuid = require('../../platform/uuid');
    
    let currentUniqueId;
    let mixpanel;
    let isEnabled = true;
    
    export function toggle(trackUsage) {
      isEnabled = trackUsage == null || trackUsage === 'true' ? true : false;
    }
    
    // TODO: Figure out location, send to EU data centers if in EU
    // {
    //     host: "api-eu.mixpanel.com",
    // },
    
    // This must stay up-to-date with all apps that hit mixpanel! That includes the
    // website and server. If changing this, make sure to change it everywhere
    async function hash(userId) {
      let hashed = await sha256String(userId);
      return `user-${hashed.replace(/[=/]/g, '')}`;
    }
    
    function isAnonymous(id) {
      return !id.startsWith('user-');
    }
    
    export async function init() {
    }
    
    export async function login(userId) {
    }
    
    let BUFFERING = false;
    let BUFFER = [];
    
    function startBuffering() {
      BUFFERING = true;
      BUFFER = [];
    }
    
    function stopBuffering() {
      for (let call of BUFFER) {
        call[0](...call[1]);
      }
      BUFFERING = false;
      BUFFER = [];
    }
    
    function buffered(func) {
      return (...args) => {
        if (process.env.NODE_ENV !== 'development') {
          if (BUFFERING) {
            BUFFER.push([func, [currentUniqueId, ...args]]);
          } else {
            func(currentUniqueId, ...args);
          }
        }
      };
    }
    
    export const track = buffered((distinct_id, name, props) => {});
    
    export const setProfile = buffered((distinct_id, props) => {});