frontend/hooks/useMatomo.ts (view raw)
1import {useEffect} from 'react';
2import useSettings from './useSettings';
3
4const useMatomo = () => {
5 const settings = useSettings();
6
7 useEffect(() => {
8 if (settings) {
9 const {matomo_script_url} = settings;
10 console.log({matomo_script_url});
11 if (matomo_script_url && typeof window !== 'undefined')
12 loadMatomo(matomo_script_url);
13 }
14 }, [settings]);
15};
16
17const loadMatomo = (matomoScriptUrl: string) => {
18 const _mtm = (window._mtm = window._mtm || []);
19 _mtm.push({'mtm.startTime': new Date().getTime(), event: 'mtm.Start'});
20 const element = document.createElement('script');
21 const script = document.getElementsByTagName('script')[0];
22 element.async = true;
23 element.src = matomoScriptUrl;
24 script.parentNode.insertBefore(element, script);
25};
26
27export default process.env.NODE_ENV === 'production' ? useMatomo : () => {};