| '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') { |
| |
| window.vars = otherProps; |
| } |
| }, []); |
| return ( |
| <VariableContext.Provider value={otherProps}> |
| {children} |
| </VariableContext.Provider> |
| ); |
| }; |
| export const useVariables = () => { |
| return useContext(VariableContext); |
| }; |
| export const loadVars = () => { |
| |
| return window.vars as VariableContextInterface; |
| }; |
|
|