Skip to main content
Glama
CommunicatorContext.tsx1.27 kB
import configuration from '@intlayer/config/built'; import { type Component, createContext, createMemo, type ParentProps, useContext, } from 'solid-js'; export type UseCrossPlatformStateProps = { postMessage: typeof window.postMessage; allowedOrigins?: string[]; senderId: string; }; const randomUUID = () => Math.random().toString(36).slice(2); const { editor } = configuration; const CommunicatorContext = createContext<UseCrossPlatformStateProps>({ postMessage: () => null, allowedOrigins: [ editor?.applicationURL, editor?.editorURL, editor?.cmsURL, ] as string[], senderId: '', }); export type CommunicatorProviderProps = ParentProps< Omit<UseCrossPlatformStateProps, 'senderId'> >; export const CommunicatorProvider: Component<CommunicatorProviderProps> = ( props ) => { // Create a stable, unique ID for the lifetime of this app/iframe instance. const senderId = randomUUID(); const value = createMemo(() => ({ postMessage: props.postMessage, allowedOrigins: props.allowedOrigins, senderId, })); return ( <CommunicatorContext.Provider value={value()}> {props.children} </CommunicatorContext.Provider> ); }; export const useCommunicator = () => useContext(CommunicatorContext);

Latest Blog Posts

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/aymericzip/intlayer'

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