diff --git a/desktop/plugins/public/ui-debugger/fb-stubs/StreamInterceptor.tsx b/desktop/plugins/public/ui-debugger/fb-stubs/StreamInterceptor.tsx index f3a2d2f17..e2561b64b 100644 --- a/desktop/plugins/public/ui-debugger/fb-stubs/StreamInterceptor.tsx +++ b/desktop/plugins/public/ui-debugger/fb-stubs/StreamInterceptor.tsx @@ -18,8 +18,10 @@ class NoOpStreamInterceptor implements StreamInterceptor { return null; } - async transformNodes(nodes: Map): Promise> { - return nodes; + async transformNodes( + nodes: Map, + ): Promise<[Map, Metadata[]]> { + return [nodes, []]; } async transformMetadata(metadata: Metadata): Promise { diff --git a/desktop/plugins/public/ui-debugger/index.tsx b/desktop/plugins/public/ui-debugger/index.tsx index 93aad26b7..45acc3141 100644 --- a/desktop/plugins/public/ui-debugger/index.tsx +++ b/desktop/plugins/public/ui-debugger/index.tsx @@ -238,9 +238,16 @@ export function plugin(client: PluginClient) { const seenNodes = new Set(); const processFrame = async (frameScan: FrameScanEvent) => { try { - const processedNodes = await streamInterceptor.transformNodes( - new Map(frameScan.nodes.map((node) => [node.id, {...node}])), - ); + const [processedNodes, additionalMetadata] = + await streamInterceptor.transformNodes( + new Map(frameScan.nodes.map((node) => [node.id, {...node}])), + ); + + metadata.update((draft) => { + for (const metadata of additionalMetadata) { + draft.set(metadata.id, metadata); + } + }); applyFrameData(processedNodes, frameScan.snapshot); diff --git a/desktop/plugins/public/ui-debugger/types.tsx b/desktop/plugins/public/ui-debugger/types.tsx index 623aff641..7a02b670f 100644 --- a/desktop/plugins/public/ui-debugger/types.tsx +++ b/desktop/plugins/public/ui-debugger/types.tsx @@ -284,7 +284,9 @@ export type InspectableUnknown = { }; export interface StreamInterceptor { - transformNodes(nodes: Map): Promise>; + transformNodes( + nodes: Map, + ): Promise<[Map, Metadata[]]>; transformMetadata(metadata: Metadata): Promise; }