'use client'; import { createContext, FC, ReactNode, useContext, useEffect } from 'react'; interface VariableContextInterface { stripeClient: string; billingEnabled: boolean; isChatBase: boolean; isGeneral: boolean; genericOauth: boolean; oauthLogoUrl: string; oauthDisplayName: string; mcpUrl?: string; cloudflareUrl: string; mainUrl: string; frontEndUrl: string; plontoKey: string; storageProvider: 'local' | 'cloudflare'; backendUrl: string; environment: string; discordUrl: string; uploadDirectory: string; facebookPixel: string; telegramBotName: string; neynarClientId: string; isSecured: boolean; disableImageCompression: boolean; disableXAnalytics: boolean; language: string; dub: boolean; transloadit: string[]; sentryDsn: string; extensionId: string; googleAdsId?: string; googleAdsTrialTracking?: string; } const VariableContext = createContext({ stripeClient: '', billingEnabled: false, isGeneral: true, genericOauth: false, isChatBase: false, oauthLogoUrl: '', googleAdsId: '', googleAdsTrialTracking: '', oauthDisplayName: '', mcpUrl: '', cloudflareUrl: '', mainUrl: '', frontEndUrl: '', storageProvider: 'local', plontoKey: '', backendUrl: '', discordUrl: '', uploadDirectory: '', isSecured: false, telegramBotName: '', facebookPixel: '', neynarClientId: '', disableImageCompression: false, disableXAnalytics: false, language: '', dub: false, transloadit: [], sentryDsn: '', extensionId: '', } as VariableContextInterface); export const VariableContextComponent: FC< VariableContextInterface & { children: ReactNode; } > = (props) => { const { children, ...otherProps } = props; useEffect(() => { if (typeof window !== 'undefined') { // @ts-ignore window.vars = otherProps; } }, []); return ( {children} ); }; export const useVariables = () => { return useContext(VariableContext); }; export const loadVars = () => { // @ts-ignore return window.vars as VariableContextInterface; };