fix(lib/vscode): patch authority in asWebviewUri

We do this because resources in webviews don't load properly
when the port is used in the resource uri.

We're not sure why this is happening but adding this fix
to get webviews working like before.
This commit is contained in:
Joe Previte 2021-08-03 14:54:16 -07:00
parent 56f0c4e193
commit 99503fb546
No known key found for this signature in database
GPG Key ID: 2C91590C6B742C24
2 changed files with 5 additions and 2 deletions

View File

@ -55,9 +55,12 @@ export function asWebviewUri(
});
}
// NOTE@coder: Add the port separately because if the port is in the domain the
// URL will be invalid and the browser will not request it.
const authorityUrl = new URL(`${resource.scheme}://${resource.authority}`);
return URI.from({
scheme: Schemas.https,
authority: `${resource.scheme}+${resource.authority}.${webviewRootResourceAuthority}`,
authority: `${resource.scheme}+${authorityUrl.hostname}.${webviewRootResourceAuthority}${authorityUrl.port ? (':' + authorityUrl.port) : ''}`,
path: resource.path,
fragment: resource.fragment,
query: resource.query,

View File

@ -256,7 +256,7 @@ async function processResourceRequest(event, requestUrl) {
const firstHostSegment = requestUrl.hostname.slice(0, requestUrl.hostname.length - (resourceBaseAuthority.length + 1));
const scheme = firstHostSegment.split('+', 1)[0];
const authority = firstHostSegment.slice(scheme.length + 1); // may be empty
const authority = firstHostSegment.slice(scheme.length + 1) + requestUrl.port ? (':' + requestUrl.port) : ''; // may be empty
for (const parentClient of parentClients) {
parentClient.postMessage({