Skip to main content
Glama

mcp-google-sheets

dynamic-properties-context.tsx1.67 kB
import { createContext, useState, useCallback, useMemo } from 'react'; export const DynamicPropertiesContext = createContext<{ propertiesNamesStillLoading: string[]; propertyLoadingFinished: (propertyName: string) => void; propertyLoadingStarted: (propertyName: string) => void; isLoadingDynamicProperties: boolean; }>({ propertiesNamesStillLoading: [], propertyLoadingFinished: (propertyName: string) => {}, propertyLoadingStarted: (propertyName: string) => {}, isLoadingDynamicProperties: false, }); export const DynamicPropertiesProvider = ({ children, }: { children: React.ReactNode; }) => { const [propertiesNamesStillLoading, setPropertiesNamesStillLoading] = useState<string[]>([]); const propertyLoadingFinished = useCallback((propertyName: string) => { setPropertiesNamesStillLoading((prev) => prev.filter((name) => name !== propertyName), ); }, []); const propertyLoadingStarted = useCallback((propertyName: string) => { setPropertiesNamesStillLoading((prev) => [...prev, propertyName]); }, []); const isLoadingDynamicProperties = useMemo( () => propertiesNamesStillLoading.length > 0, [propertiesNamesStillLoading], ); const contextValue = useMemo( () => ({ propertiesNamesStillLoading, propertyLoadingFinished, propertyLoadingStarted, isLoadingDynamicProperties, }), [ propertiesNamesStillLoading, propertyLoadingFinished, propertyLoadingStarted, isLoadingDynamicProperties, ], ); return ( <DynamicPropertiesContext.Provider value={contextValue}> {children} </DynamicPropertiesContext.Provider> ); };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server