| 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) |
|
|