mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-01 05:51:32 +01:00
web - do not reload if workspace is equal
This commit is contained in:
@@ -10,6 +10,7 @@ import { streamToBuffer } from 'vs/base/common/buffer';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { request } from 'vs/base/parts/request/browser/request';
|
||||
import { isFolderToOpen, isWorkspaceToOpen } from 'vs/platform/windows/common/windows';
|
||||
import { isEqual } from 'vs/base/common/resources';
|
||||
|
||||
interface ICredential {
|
||||
service: string;
|
||||
@@ -203,9 +204,12 @@ class WorkspaceProvider implements IWorkspaceProvider {
|
||||
constructor(public readonly workspace: IWorkspace) { }
|
||||
|
||||
async open(workspace: IWorkspace, options?: { reuse?: boolean }): Promise<void> {
|
||||
let targetHref: string | undefined = undefined;
|
||||
if (options && options.reuse && this.isSame(this.workspace, workspace)) {
|
||||
return; // return early if workspace is not changing and we are reusing window
|
||||
}
|
||||
|
||||
// Empty
|
||||
let targetHref: string | undefined = undefined;
|
||||
if (!workspace) {
|
||||
targetHref = `${document.location.origin}${document.location.pathname}?ew=true`;
|
||||
}
|
||||
@@ -228,6 +232,22 @@ class WorkspaceProvider implements IWorkspaceProvider {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private isSame(workspaceA: IWorkspace, workspaceB: IWorkspace): boolean {
|
||||
if (!workspaceA || !workspaceB) {
|
||||
return workspaceA === workspaceB; // both empty
|
||||
}
|
||||
|
||||
if (isFolderToOpen(workspaceA) && isFolderToOpen(workspaceB)) {
|
||||
return isEqual(workspaceA.folderUri, workspaceB.folderUri); // same workspace
|
||||
}
|
||||
|
||||
if (isWorkspaceToOpen(workspaceA) && isWorkspaceToOpen(workspaceB)) {
|
||||
return isEqual(workspaceA.workspaceUri, workspaceB.workspaceUri); // same workspace
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const options: IWorkbenchConstructionOptions & { folderUri?: UriComponents, workspaceUri?: UriComponents } = JSON.parse(document.getElementById('vscode-workbench-web-configuration')!.getAttribute('data-settings')!);
|
||||
|
||||
Reference in New Issue
Block a user