提交 7ba4f89e 编写于 作者: D Daniel Imms

General clean up

上级 8caae435
......@@ -442,7 +442,6 @@ export class WindowsManager implements IWindowsMainService {
// Handle empty
if (emptyToRestore.length > 0) {
// TODO: There's an extra empty workspace opening when restoring an empty workspace (sometimes)
emptyToRestore.forEach(backupFolder => {
const configuration = this.toConfiguration(openConfig, null, null, null, null, backupFolder);
const browserWindow = this.openInBrowserWindow(configuration, openInNewWindow, openInNewWindow ? void 0 : openConfig.windowToUse);
......@@ -451,7 +450,6 @@ export class WindowsManager implements IWindowsMainService {
openInNewWindow = true; // any other folders to open must open in new window then
});
}
// TODO: Is this handling correct?
// Only open empty if no empty workspaces were restored
else if (emptyToOpen.length > 0) {
emptyToOpen.forEach(() => {
......
......@@ -3,7 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import Uri from 'vs/base/common/uri';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { TPromise } from 'vs/base/common/winjs.base';
......@@ -18,27 +17,10 @@ export const IBackupService = createDecorator<IBackupService>('backupService');
export interface IBackupMainService extends IBackupService {
_serviceBrand: any;
/**
* The set of active workspace backup paths being tracked for restoration.
*/
workspaceBackupPaths: string[];
/**
* The set of active empty workspace backup paths being tracked for restoration.
*/
emptyWorkspaceBackupPaths: string[];
registerWindowForBackups(windowId: number, isEmptyWorkspace: boolean, backupFolder?: string, workspacePath?: string);
/**
* Pushes workspace backup paths to be tracked for restoration.
*
* @param workspaces The workspaces to add.
*/
pushWorkspaceBackupPathsSync(workspaces: Uri[]): void;
// TODO: Doc
pushEmptyWorkspaceBackupWindowIdSync(vscodeWindowId: string): void;
}
export interface IBackupService {
......
......@@ -66,37 +66,19 @@ export class BackupMainService implements IBackupMainService {
backupFolder = crypto.createHash('md5').update(caseAwarePath).digest('hex');
}
this.mapWindowToBackupFolder[windowId] = isEmptyWorkspace ? backupFolder : workspacePath;
this.mapWindowToBackupFolder[windowId] = backupFolder;
// TODO: Merge push* functions into this one?
if (isEmptyWorkspace) {
this.pushEmptyWorkspaceBackupWindowIdSync(backupFolder);
if (this.backups.emptyWorkspaces.indexOf(backupFolder) === -1) {
this.backups.emptyWorkspaces.push(backupFolder);
this.saveSync();
}
} else {
this.pushWorkspaceBackupPathsSync([Uri.file(backupFolder)]);
}
}
public pushWorkspaceBackupPathsSync(workspaces: Uri[]): void {
let needsSaving = false;
workspaces.forEach(workspace => {
if (this.backups.folderWorkspaces.indexOf(workspace.fsPath) === -1) {
this.backups.folderWorkspaces.push(workspace.fsPath);
needsSaving = true;
const sanitizedPath = this.sanitizePath(workspacePath);
if (this.backups.folderWorkspaces.indexOf(sanitizedPath) === -1) {
this.backups.folderWorkspaces.push(sanitizedPath);
this.saveSync();
}
});
if (needsSaving) {
this.saveSync();
}
}
// TODO: Think of a less terrible name
// TODO: Test
// TODO: Merge with pushWorkspaceBackupPathsSync?
public pushEmptyWorkspaceBackupWindowIdSync(vscodeWindowId: string): void {
if (this.backups.emptyWorkspaces.indexOf(vscodeWindowId) === -1) {
this.backups.emptyWorkspaces.push(vscodeWindowId);
this.saveSync();
}
}
......@@ -112,13 +94,14 @@ export class BackupMainService implements IBackupMainService {
this.saveSync();
}
// TODO: Remove based on windowId instead?
// TODO: Test
// TODO: Merge with removeWorkspaceBackupPathSync?
private removeEmptyWorkspaceBackupWindowIdSync(vscodeWindowId: string): void {
private removeEmptyWorkspaceBackupWindowIdSync(backupFolder: string): void {
if (!this.backups.emptyWorkspaces) {
return;
}
const index = this.backups.emptyWorkspaces.indexOf(vscodeWindowId);
const index = this.backups.emptyWorkspaces.indexOf(backupFolder);
if (index === -1) {
return;
}
......@@ -218,8 +201,12 @@ export class BackupMainService implements IBackupMainService {
}
}
private sanitizePath(p) {
return platform.isLinux ? p : p.toLowerCase();
}
protected toBackupPath(workspacePath: string): string {
const caseAwarePath = platform.isLinux ? workspacePath : workspacePath.toLowerCase();
const caseAwarePath = this.sanitizePath(workspacePath);
const workspaceHash = crypto.createHash('md5').update(caseAwarePath).digest('hex');
return path.join(this.backupHome, workspaceHash);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册