mixpanel / mixpanel-js

Official Mixpanel JavaScript Client Library
https://mixpanel.com/help/reference/javascript
Other
888 stars 312 forks source link

mixpanel.identify() works even when it is turned off. #423

Open nazarHnatyuk opened 7 months ago

nazarHnatyuk commented 7 months ago

Hello everyone, I encountered such a problem: mixpanel.identify(); works even when shouldEnableMixpanel = false. What could be the problem?


import mixpanel from "mixpanel-browser";

classMixpanelTracker {
  constructor(shouldEnableMixpanel = false) {
    this.shouldEnableMixpanel = shouldEnableMixpanel && !window.location.host.includes('localhost');
}

  initialize() {
    if (this.shouldEnableMixpanel) {
      mixpanel.init(MIXPANEL_API_TOKEN, { track_pageview: false });
      mixpanel.identify();
    }
    else {
      console.log(`Mixpanel identifying is disabled or in localhost.`);
    }
  }

  logEvent(eventName, eventParams) {
    if (this.shouldEnableMixpanel) {
      try {
        mixpanel.track(eventName, eventParams);
      } catch (error) {
        console.error(error);
      }
    } else {
      console.log(`Mixpanel tracking is disabled or in localhost.`);
    }
  }

  logUserProperty(property, value) {
    if (this.shouldEnableMixpanel) {
      try {
        mixpanel.people.set({ [property]: value });
      } catch (error) {
        console.error(error);
      }
    } else {
      console.log(`Mixpanel tracking is disabled or in localhost.`);
      }
    }
}

export default MixpanelTracker;
doc-han commented 7 months ago

mixpanel.identify() is not bound by the class you've written. Hence, to enforce that restriction you need a method in this class that will be called whenever you want to identify. And that will enforce your restriction.