File size: 2,147 Bytes
f2e9a59 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | '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 (
<VariableContext.Provider value={otherProps}>
{children}
</VariableContext.Provider>
);
};
export const useVariables = () => {
return useContext(VariableContext);
};
export const loadVars = () => {
// @ts-ignore
return window.vars as VariableContextInterface;
};
|