"use client"; import { createContext, useContext, useEffect, useState } from "react"; import { DomainConfig } from "../lib/edgeConfig"; type DomainContextType = Omit; export const DomainContext = createContext({ features: { requireLogin: false, privacy: true, browse: false, sendToZulip: false, }, api_url: "", websocket_url: "", zulip_streams: "", }); export const DomainContextProvider = ({ config, children, }: { config: DomainConfig; children: any; }) => { const [context, setContext] = useState(); useEffect(() => { if (!config) return; const { auth_callback_url, ...others } = config; setContext(others); }, [config]); if (!context) return; return ( {children} ); }; // Get feature config client-side with export const featureEnabled = ( featureName: "requireLogin" | "privacy" | "browse" | "sendToZulip", ) => { const context = useContext(DomainContext); return context.features[featureName] as boolean | undefined; }; // Get config server-side (out of react) : see lib/edgeConfig.