dify/web/app/components/base/analytics-consent/cloud-analytics-state.ts
Coding On Star 8d293023cc
feat: gate cloud analytics behind cookie consent (#39408)
Co-authored-by: CodingOnStar <hanxujiang@dify.com>
2026-07-23 02:40:54 +00:00

36 lines
986 B
TypeScript

import { COOKIEYES_SITE_KEY, IS_CLOUD_EDITION, IS_PROD, WEB_PREFIX } from '@/config'
import { isCloudAnalyticsRequest } from './request-boundary'
const CURRENT_PATHNAME_HEADER = 'x-dify-pathname'
type RequestHeaders = {
get: (name: string) => string | null
}
export type CloudAnalyticsBoundaryState = {
cookieYesSiteKey: string
enabled: boolean
nonce?: string
}
export function getCloudAnalyticsBoundaryState(
requestHeaders: RequestHeaders,
): CloudAnalyticsBoundaryState {
const pathname = requestHeaders.get(CURRENT_PATHNAME_HEADER) || '/'
const requestHost = requestHeaders.get('x-forwarded-host') || requestHeaders.get('host')
const enabled = isCloudAnalyticsRequest({
cookieYesSiteKey: COOKIEYES_SITE_KEY,
isCloudEdition: IS_CLOUD_EDITION,
isProd: IS_PROD,
pathname,
requestHost,
webPrefix: WEB_PREFIX,
})
return {
cookieYesSiteKey: COOKIEYES_SITE_KEY,
enabled,
nonce: requestHeaders.get('x-nonce') ?? undefined,
}
}