From 9d595de8069c1ae4e032fd9f51f7a0e11495a659 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Mon, 4 Nov 2024 14:53:41 +0100 Subject: [PATCH] fix embedded workbench --- .../trace-viewer/src/ui/embeddedWorkbenchLoader.tsx | 11 ++++++++++- packages/trace-viewer/src/ui/uiModeTraceView.tsx | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/trace-viewer/src/ui/embeddedWorkbenchLoader.tsx b/packages/trace-viewer/src/ui/embeddedWorkbenchLoader.tsx index c8b8aa216c..23801f95da 100644 --- a/packages/trace-viewer/src/ui/embeddedWorkbenchLoader.tsx +++ b/packages/trace-viewer/src/ui/embeddedWorkbenchLoader.tsx @@ -21,6 +21,7 @@ import './embeddedWorkbenchLoader.css'; import { Workbench } from './workbench'; import { currentTheme, toggleTheme } from '@web/theme'; import type { SourceLocation } from './modelUtil'; +import { filePathToTraceURL } from './uiModeTraceView'; function openPage(url: string, target?: string) { if (url) @@ -40,7 +41,15 @@ export const EmbeddedWorkbenchLoader: React.FunctionComponent = () => { React.useEffect(() => { window.addEventListener('message', async ({ data: { method, params } }) => { if (method === 'loadTraceRequested') { - setTraceURLs(params.traceUrl ? [params.traceUrl] : []); + if (params.traceUrl) { + // the param is called URL, but VS Code sends a path + const url = params.traceUrl.startsWith('http') + ? params.traceUrl + : filePathToTraceURL(params.traceUrl).toString(); + setTraceURLs([url]); + } else { + setTraceURLs([]); + } setProcessingErrorMessage(null); } else if (method === 'applyTheme') { if (currentTheme() !== params.theme) diff --git a/packages/trace-viewer/src/ui/uiModeTraceView.tsx b/packages/trace-viewer/src/ui/uiModeTraceView.tsx index 33c3afff4a..8e98a8ccd7 100644 --- a/packages/trace-viewer/src/ui/uiModeTraceView.tsx +++ b/packages/trace-viewer/src/ui/uiModeTraceView.tsx @@ -125,7 +125,7 @@ function formatUrl(traceURL: URL) { return traceURL; } -function filePathToTraceURL(path: string) { +export function filePathToTraceURL(path: string) { const url = new URL('file', location.href); url.searchParams.set('path', path); return url;