Commit 4e370eb7 authored by Igor Stuev's avatar Igor Stuev Committed by GitHub

Merge pull request #1040 from blockscout/ga-fix

fix ga error
parents ec9c3a0b 656ab2bf
import appConfig from 'configs/app/config';
import delay from 'lib/delay';
export default function isGoogleAnalyticsLoaded(retries = 3): Promise<boolean> {
if (!retries || !appConfig.googleAnalytics.propertyId) {
return Promise.resolve(false);
}
return typeof window.ga?.getAll === 'function' ? Promise.resolve(true) : delay(500).then(() => isGoogleAnalyticsLoaded(retries - 1));
}
...@@ -10,6 +10,7 @@ import * as cookies from 'lib/cookies'; ...@@ -10,6 +10,7 @@ import * as cookies from 'lib/cookies';
import getQueryParamString from 'lib/router/getQueryParamString'; import getQueryParamString from 'lib/router/getQueryParamString';
import getGoogleAnalyticsClientId from './getGoogleAnalyticsClientId'; import getGoogleAnalyticsClientId from './getGoogleAnalyticsClientId';
import isGoogleAnalyticsLoaded from './isGoogleAnalyticsLoaded';
export default function useMixpanelInit() { export default function useMixpanelInit() {
const [ isInited, setIsInited ] = React.useState(false); const [ isInited, setIsInited ] = React.useState(false);
...@@ -17,35 +18,35 @@ export default function useMixpanelInit() { ...@@ -17,35 +18,35 @@ export default function useMixpanelInit() {
const debugFlagQuery = React.useRef(getQueryParamString(router.query._mixpanel_debug)); const debugFlagQuery = React.useRef(getQueryParamString(router.query._mixpanel_debug));
React.useEffect(() => { React.useEffect(() => {
if (!appConfig.mixpanel.projectToken) { isGoogleAnalyticsLoaded().then((isGALoaded) => {
return; if (!appConfig.mixpanel.projectToken) {
} return;
}
const debugFlagCookie = cookies.get(cookies.NAMES.MIXPANEL_DEBUG);
const debugFlagCookie = cookies.get(cookies.NAMES.MIXPANEL_DEBUG);
const config: Partial<Config> = {
debug: Boolean(debugFlagQuery.current || debugFlagCookie), const config: Partial<Config> = {
}; debug: Boolean(debugFlagQuery.current || debugFlagCookie),
const isAuth = Boolean(cookies.get(cookies.NAMES.API_TOKEN)); };
const userId = getGoogleAnalyticsClientId(); const isAuth = Boolean(cookies.get(cookies.NAMES.API_TOKEN));
mixpanel.init(appConfig.mixpanel.projectToken, config); mixpanel.init(appConfig.mixpanel.projectToken, config);
mixpanel.register({ mixpanel.register({
'Chain id': appConfig.network.id, 'Chain id': appConfig.network.id,
Environment: appConfig.isDev ? 'Dev' : 'Prod', Environment: appConfig.isDev ? 'Dev' : 'Prod',
Authorized: isAuth, Authorized: isAuth,
'Viewport width': window.innerWidth, 'Viewport width': window.innerWidth,
'Viewport height': window.innerHeight, 'Viewport height': window.innerHeight,
Language: window.navigator.language, Language: window.navigator.language,
'User id': userId, 'User id': isGALoaded ? getGoogleAnalyticsClientId() : undefined,
'Device type': _capitalize(deviceType), 'Device type': _capitalize(deviceType),
});
setIsInited(true);
if (debugFlagQuery.current && !debugFlagCookie) {
cookies.set(cookies.NAMES.MIXPANEL_DEBUG, 'true');
}
}); });
setIsInited(true);
if (debugFlagQuery.current && !debugFlagCookie) {
cookies.set(cookies.NAMES.MIXPANEL_DEBUG, 'true');
}
}, []); }, []);
return isInited; return isInited;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment