module AnalyticsHelper def javascript_include_analytics_js return unless analytics_enabled? if segment_client_key.present? javascript_tag analytics_js_snippet, nonce: true end end def identify_user_for_analytics(user) return unless analytics_enabled? if user.present? javascript_tag identify_user_snippet(user.id, user.email, user.full_name), nonce: true end end private def analytics_enabled? ENV["ENABLE_ANALYTICS"] == "true" end def segment_client_key ENV["SEGMENT_CLIENT_KEY"] end def analytics_js_snippet <<~SNIPPET !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment 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"];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