_customer_io.pug 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. if(customerIoEnabled && ExposedSettings.cioWriteKey && ExposedSettings.cioSiteId)
  2. -
  3. function boolAttr(value) {
  4. return value !== undefined ? String(value) : null;
  5. }
  6. script(type="text/javascript", id="cio-loader", nonce=scriptNonce, data-best-subscription=(usersBestSubscription && usersBestSubscription.type), data-ai-blocked=boolAttr(aiBlocked), data-has-ai-assist=boolAttr(hasAiAssist), data-cio-write-key=ExposedSettings.cioWriteKey, data-cio-site-id=ExposedSettings.cioSiteId, data-session-analytics-id=getSessionAnalyticsId(), data-user-id=getLoggedInUserId(), data-last-active=lastActive, data-sign-up-date=signUpDate, data-subject-area=subjectArea, data-role=role, data-used-latex=usedLatex, data-primary-occupation=primaryOccupation, data-country=countryCode, data-commons-institution=commonsInstitution, data-group-role=groupRole, data-features=user.features, data-email=user.email, data-is-managed-user=boolAttr(isManagedUser)).
  7. function parseBool(value) {
  8. return value === 'true' ? true : value === 'false' ? false : undefined;
  9. }
  10. var cioSettings = document.querySelector('#cio-loader').dataset;
  11. var analyticsId = cioSettings.sessionAnalyticsId;
  12. var siteId = cioSettings.cioSiteId;
  13. var writeKey = cioSettings.cioWriteKey;
  14. var userId = cioSettings.userId;
  15. var usersBestSubscription = cioSettings.bestSubscription;
  16. var aiBlocked = parseBool(cioSettings.aiBlocked);
  17. var hasAiAssist = parseBool(cioSettings.hasAiAssist);
  18. var lastActive = cioSettings.lastActive;
  19. var signUpDate = cioSettings.signUpDate;
  20. var subjectArea = cioSettings.subjectArea;
  21. var role = cioSettings.role;
  22. var primaryOccupation = cioSettings.primaryOccupation;
  23. var usedLatex = cioSettings.usedLatex;
  24. var features = cioSettings.features;
  25. var email = cioSettings.email;
  26. var countryCode = cioSettings.country;
  27. var commonsInstitution = cioSettings.commonsInstitution;
  28. var groupRole = cioSettings.groupRole;
  29. var isManagedUser = parseBool(cioSettings.isManagedUser);
  30. !function(){var i="cioanalytics", analytics=(window[i]=window[i]||[]);if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.setAttribute('data-global-customerio-analytics-key', i);t.src="https://cdp.customer.io/v1/analytics-js/snippet/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._writeKey=key;analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.15.3";
  31. analytics.load(
  32. writeKey,
  33. {
  34. disableClientPersistence: true,
  35. "integrations": {
  36. "Customer.io In-App Plugin": {
  37. siteId
  38. }
  39. }
  40. }
  41. );
  42. if (analyticsId) {
  43. analytics.setAnonymousId(analyticsId);
  44. };
  45. function addIfDefined(obj, key, value) {
  46. if (typeof value !== 'undefined') obj[key] = value;
  47. }
  48. var identifyData = {overleafId: userId, lastActive, signUpDate};
  49. addIfDefined(identifyData, 'best-subscription-type', usersBestSubscription);
  50. addIfDefined(identifyData, 'aiBlocked', aiBlocked);
  51. addIfDefined(identifyData, 'hasAiAssist', hasAiAssist);
  52. addIfDefined(identifyData, 'subjectArea', subjectArea);
  53. addIfDefined(identifyData, 'role', role);
  54. addIfDefined(identifyData, 'primaryOccupation', primaryOccupation);
  55. addIfDefined(identifyData, 'usedLatex', usedLatex);
  56. addIfDefined(identifyData, 'country', countryCode);
  57. addIfDefined(identifyData, 'commonsInstitution', commonsInstitution);
  58. addIfDefined(identifyData, 'groupRole', groupRole);
  59. addIfDefined(identifyData, 'isManagedUser', isManagedUser);
  60. addIfDefined(identifyData, 'features', features);
  61. addIfDefined(identifyData, 'email', email);
  62. analytics.identify(analyticsId, identifyData);
  63. }}();