From 82c1f8607dbd3f8d95ea9063ac12c811c719dd9b Mon Sep 17 00:00:00 2001 From: Vladyslav Matsiiako Date: Sun, 11 Jun 2023 19:23:30 -0700 Subject: [PATCH] Added intercom --- frontend/next.config.js | 10 ++++----- frontend/src/pages/_app.tsx | 45 +++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/frontend/next.config.js b/frontend/next.config.js index dbe69eb1d..213ba07e1 100644 --- a/frontend/next.config.js +++ b/frontend/next.config.js @@ -7,14 +7,14 @@ const path = require('path'); const ContentSecurityPolicy = ` default-src 'self'; - script-src 'self' https://app.posthog.com https://js.stripe.com https://api.stripe.com 'unsafe-inline' 'unsafe-eval'; + script-src 'self' https://app.posthog.com https://js.stripe.com https://api.stripe.com https://widget.intercom.io https://js.intercomcdn.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' https://rsms.me 'unsafe-inline'; child-src https://api.stripe.com; frame-src https://js.stripe.com/ https://api.stripe.com; - connect-src 'self' https://api.heroku.com/ https://id.heroku.com/oauth/authorize https://id.heroku.com/oauth/token https://checkout.stripe.com https://app.posthog.com https://api.stripe.com; - img-src 'self' https://*.stripe.com https://i.ytimg.com/ data:; - media-src; - font-src 'self' https://maxcdn.bootstrapcdn.com https://rsms.me https://fonts.gstatic.com; + connect-src 'self' wss://nexus-websocket-a.intercom.io https://api-iam.intercom.io https://api.heroku.com/ https://id.heroku.com/oauth/authorize https://id.heroku.com/oauth/token https://checkout.stripe.com https://app.posthog.com https://api.stripe.com; + img-src 'self' https://static.intercomassets.com https://js.intercomcdn.com https://downloads.intercomcdn.com https://*.stripe.com https://i.ytimg.com/ data:; + media-src https://js.intercomcdn.com; + font-src 'self' https://fonts.intercomcdn.com/ https://maxcdn.bootstrapcdn.com https://rsms.me https://fonts.gstatic.com; `; // You can choose which headers to add to the list diff --git a/frontend/src/pages/_app.tsx b/frontend/src/pages/_app.tsx index 20c3340c2..3cfea7b47 100644 --- a/frontend/src/pages/_app.tsx +++ b/frontend/src/pages/_app.tsx @@ -1,4 +1,9 @@ +/* eslint-disable vars-on-top */ +/* eslint-disable no-var */ +/* eslint-disable func-names */ /* eslint-disable react/jsx-props-no-spreading */ +// @ts-nocheck + import { useEffect } from 'react'; import { AppProps } from 'next/app'; import { useRouter } from 'next/router'; @@ -33,11 +38,51 @@ type NextAppProp = AppProps & { const App = ({ Component, pageProps, ...appProps }: NextAppProp): JSX.Element => { const router = useRouter(); + useEffect(() => { + // Intercom code snippet + (function() { + var w=window;var ic=w.Intercom; + if(typeof ic==="function") { + ic('reattach_activator'); + ic('update',w.intercomSettings); + } else { + var d=document; + var i=function() { + // eslint-disable-next-line prefer-rest-params + i.c(arguments); + }; + i.q=[]; + i.c=function(args) { + i.q.push(args); + }; + w.Intercom=i; + var l=function() { + var s=d.createElement('script'); + s.type='text/javascript'; + s.async=true; + s.src='https://widget.intercom.io/widget/hsg644ru'; + var x=d.getElementsByTagName('script')[0]; + x.parentNode.insertBefore(s,x);}; + if(w.attachEvent) { + w.attachEvent('onload',l); + } else { + w.addEventListener('load',l,false); + } + } + } + )(); + + window.Intercom('boot', { + app_id: 'hsg644ru' + }); + }, []); + useEffect(() => { // Init for auto capturing const telemetry = new Telemetry().getInstance(); const handleRouteChange = () => { + (window).Intercom('update'); if (typeof window !== 'undefined') { telemetry.capture('$pageview'); }