Files
vscode-front-matter/src/dashboardWebView/providers/SettingsProvider.tsx
T
2023-03-10 11:54:11 +01:00

39 lines
989 B
TypeScript

import * as React from 'react'
interface ISettingsProviderProps {
version?: string;
experimental?: boolean;
aiUrl?: string;
}
const SettingsContext = React.createContext<ISettingsProviderProps | undefined>(undefined);
const SettingsProvider: React.FunctionComponent<ISettingsProviderProps> = ({ version, experimental, aiUrl, children }: React.PropsWithChildren<ISettingsProviderProps>) => {
return (
<SettingsContext.Provider
value={{
version,
experimental,
aiUrl
}}
>
{children}
</SettingsContext.Provider>
)
};
const useSettingsContext = (): ISettingsProviderProps => {
const loadFunc = React.useContext(SettingsContext);
if (loadFunc === undefined) {
throw new Error('useSettingsContext must be used within the SettingsProvider');
}
return loadFunc;
};
SettingsContext.displayName = 'SettingsContext';
SettingsProvider.displayName = 'SettingsProvider';
export { SettingsProvider, useSettingsContext };