diff --git a/libs/sdk-js/src/react-ui/client.tsx b/libs/sdk-js/src/react-ui/client.tsx index eaf2ce8f3..af2e7f111 100644 --- a/libs/sdk-js/src/react-ui/client.tsx +++ b/libs/sdk-js/src/react-ui/client.tsx @@ -23,10 +23,12 @@ type GetMetaType = Bag extends { MetaType: unknown } ? Bag["MetaType"] : unknown; -type UseStreamContext< +interface UseStreamContext< StateType extends Record = Record, Bag extends BagTemplate = BagTemplate, -> = { stream: UseStream; meta: GetMetaType }; +> extends UseStream { + meta?: GetMetaType; +} export function useStreamContext< StateType extends Record = Record, @@ -39,7 +41,18 @@ export function useStreamContext< } = BagTemplate, >(): UseStreamContext { const ctx = React.useContext(UseStreamContext); - return ctx as UseStreamContext; + if (!ctx) { + throw new Error( + "useStreamContext must be used within a LoadExternalComponent", + ); + } + + return new Proxy(ctx, { + get(target, prop: keyof UseStreamContext) { + if (prop === "meta") return target.meta; + return target.stream[prop]; + }, + }) as unknown as UseStreamContext; } interface ComponentTarget {