dograh/ui/src/context/AppConfigContext.tsx
Abhishek 50a59164e7
fix: ssl error when using self signed certificate (#238)
fix: ssl error when using self signed certificate with remote deployment
2026-04-14 18:58:27 +05:30

61 lines
1.5 KiB
TypeScript

'use client';
import { createContext, ReactNode, useContext, useEffect, useState } from 'react';
interface AppConfig {
uiVersion: string;
apiVersion: string;
deploymentMode: string;
authProvider: string;
}
interface AppConfigContextType {
config: AppConfig | null;
loading: boolean;
}
const defaultConfig: AppConfig = {
uiVersion: 'dev',
apiVersion: 'unknown',
deploymentMode: 'oss',
authProvider: 'local',
};
const AppConfigContext = createContext<AppConfigContextType>({
config: null,
loading: true,
});
export function AppConfigProvider({ children }: { children: ReactNode }) {
const [config, setConfig] = useState<AppConfig | null>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch('/api/config/version')
.then((res) => res.json())
.then((data) => {
setConfig({
uiVersion: data.ui || 'dev',
apiVersion: data.api || 'unknown',
deploymentMode: data.deploymentMode || 'oss',
authProvider: data.authProvider || 'local',
});
})
.catch(() => {
setConfig(defaultConfig);
})
.finally(() => {
setLoading(false);
});
}, []);
return (
<AppConfigContext.Provider value={{ config, loading }}>
{children}
</AppConfigContext.Provider>
);
}
export function useAppConfig() {
return useContext(AppConfigContext);
}