| import type { FC } from 'react' | |
| import React from 'react' | |
| import Script from 'next/script' | |
| import { headers } from 'next/headers' | |
| import { IS_CE_EDITION } from '@/config' | |
| export enum GaType { | |
| admin = 'admin', | |
| webapp = 'webapp', | |
| } | |
| const gaIdMaps = { | |
| [GaType.admin]: 'G-DM9497FN4V', | |
| [GaType.webapp]: 'G-2MFWXK7WYT', | |
| } | |
| export type IGAProps = { | |
| gaType: GaType | |
| } | |
| const GA: FC<IGAProps> = ({ | |
| gaType, | |
| }) => { | |
| if (IS_CE_EDITION) | |
| return null | |
| const nonce = process.env.NODE_ENV === 'production' ? headers().get('x-nonce') : '' | |
| return ( | |
| <> | |
| <Script | |
| strategy="beforeInteractive" | |
| async | |
| src={`https://www.googletagmanager.com/gtag/js?id=${gaIdMaps[gaType]}`} | |
| nonce={nonce!} | |
| ></Script> | |
| <Script | |
| id="ga-init" | |
| dangerouslySetInnerHTML={{ | |
| __html: ` | |
| window.dataLayer = window.dataLayer || []; | |
| function gtag(){dataLayer.push(arguments);} | |
| gtag('js', new Date()); | |
| gtag('config', '${gaIdMaps[gaType]}'); | |
| `, | |
| }} | |
| nonce={nonce!} | |
| > | |
| </Script> | |
| </> | |
| ) | |
| } | |
| export default React.memo(GA) | |