postiz/libraries/react-shared-libraries/src/helpers/variable.context.tsx

67 lines
1.5 KiB
TypeScript

'use client';
import { createContext, FC, ReactNode, useContext, useEffect } from 'react';
interface VariableContextInterface {
billingEnabled: boolean;
isGeneral: boolean;
genericOauth: boolean;
oauthLogoUrl: string;
oauthDisplayName: string;
frontEndUrl: string;
plontoKey: string;
storageProvider: 'local' | 'cloudflare';
backendUrl: string;
discordUrl: string;
uploadDirectory: string;
facebookPixel: string;
telegramBotName: string;
neynarClientId: string;
isSecured: boolean;
tolt: string;
}
const VariableContext = createContext({
billingEnabled: false,
isGeneral: true,
genericOauth: false,
oauthLogoUrl: '',
oauthDisplayName: '',
frontEndUrl: '',
storageProvider: 'local',
plontoKey: '',
backendUrl: '',
discordUrl: '',
uploadDirectory: '',
isSecured: false,
telegramBotName: '',
facebookPixel: '',
neynarClientId: '',
tolt: '',
} 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;
};