Skip to content

Commit c6f4de2

Browse files
author
Eric Amodio
committed
Moves first run setting into workspace storage
1 parent 002d722 commit c6f4de2

5 files changed

Lines changed: 24 additions & 13 deletions

File tree

src/vs/platform/storage/browser/storageService.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
77
import { Emitter } from 'vs/base/common/event';
8-
import { IWorkspaceStorageChangeEvent, IStorageService, StorageScope, IWillSaveStateEvent, WillSaveStateReason, logStorage } from 'vs/platform/storage/common/storage';
8+
import { IWorkspaceStorageChangeEvent, IStorageService, StorageScope, IWillSaveStateEvent, WillSaveStateReason, logStorage, WorkspaceStorageSettings } from 'vs/platform/storage/common/storage';
99
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
1010
import { IWorkspaceInitializationPayload } from 'vs/platform/workspaces/common/workspaces';
1111
import { IFileService, FileChangeType } from 'vs/platform/files/common/files';
@@ -67,6 +67,13 @@ export class BrowserStorageService extends Disposable implements IStorageService
6767
this.workspaceStorage = this._register(new Storage(this.workspaceStorageDatabase));
6868
this._register(this.workspaceStorage.onDidChangeStorage(key => this._onDidChangeStorage.fire({ key, scope: StorageScope.WORKSPACE })));
6969

70+
const firstOpen = this.workspaceStorage.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN);
71+
if (firstOpen === undefined) {
72+
this.workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, !(await this.fileService.exists(this.workspaceStorageFile)));
73+
} else if (firstOpen) {
74+
this.workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, false);
75+
}
76+
7077
// Global Storage
7178
this.globalStorageFile = joinPath(stateRoot, 'global.json');
7279
this.globalStorageDatabase = this._register(new FileStorageDatabase(this.globalStorageFile, true /* watch for external changes */, this.fileService));

src/vs/platform/storage/common/storage.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ import { Disposable } from 'vs/base/common/lifecycle';
99
import { isUndefinedOrNull } from 'vs/base/common/types';
1010
import { IWorkspaceInitializationPayload } from 'vs/platform/workspaces/common/workspaces';
1111

12+
export enum WorkspaceStorageSettings {
13+
WORKSPACE_FIRST_OPEN = 'workbench.workspaceFirstOpen'
14+
}
15+
1216
export const IStorageService = createDecorator<IStorageService>('storageService');
1317

1418
export enum WillSaveStateReason {

src/vs/platform/storage/node/storageService.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
77
import { Emitter } from 'vs/base/common/event';
88
import { ILogService, LogLevel } from 'vs/platform/log/common/log';
9-
import { IWorkspaceStorageChangeEvent, IStorageService, StorageScope, IWillSaveStateEvent, WillSaveStateReason, logStorage } from 'vs/platform/storage/common/storage';
9+
import { IWorkspaceStorageChangeEvent, IStorageService, StorageScope, IWillSaveStateEvent, WillSaveStateReason, logStorage, WorkspaceStorageSettings } from 'vs/platform/storage/common/storage';
1010
import { SQLiteStorageDatabase, ISQLiteStorageDatabaseLoggingOptions } from 'vs/base/parts/storage/node/storage';
1111
import { Storage, IStorageDatabase, IStorage, StorageHint } from 'vs/base/parts/storage/common/storage';
1212
import { mark } from 'vs/base/common/performance';
@@ -104,6 +104,13 @@ export class NativeStorageService extends Disposable implements IStorageService
104104
result.wasCreated ? StorageHint.STORAGE_DOES_NOT_EXIST : undefined
105105
);
106106
await workspaceStorage.init();
107+
108+
const firstOpen = workspaceStorage.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN);
109+
if (firstOpen === undefined) {
110+
workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, !result.wasCreated);
111+
} else if (firstOpen) {
112+
workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, false);
113+
}
107114
} finally {
108115
mark('didInitWorkspaceStorage');
109116
}

src/vs/workbench/browser/layout.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { PanelPart } from 'vs/workbench/browser/parts/panel/panelPart';
1616
import { PanelRegistry, Extensions as PanelExtensions } from 'vs/workbench/browser/panel';
1717
import { Position, Parts, IWorkbenchLayoutService, positionFromString, positionToString } from 'vs/workbench/services/layout/browser/layoutService';
1818
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
19-
import { IStorageService, StorageScope, WillSaveStateReason } from 'vs/platform/storage/common/storage';
19+
import { IStorageService, StorageScope, WillSaveStateReason, WorkspaceStorageSettings } from 'vs/platform/storage/common/storage';
2020
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
2121
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
2222
import { IPanelService } from 'vs/workbench/services/panel/common/panelService';
@@ -54,7 +54,6 @@ export enum Settings {
5454
PANEL_POSITION = 'workbench.panel.defaultLocation',
5555

5656
ZEN_MODE_RESTORE = 'zenMode.restore',
57-
WORKSPACE_FIRST_OPEN = 'workbench.workspaceFirstOpen'
5857
}
5958

6059
enum Storage {
@@ -562,7 +561,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
562561
return;
563562
}
564563

565-
const firstOpen = storageService.getBoolean(Settings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE);
564+
const firstOpen = storageService.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE);
566565
if (!firstOpen) {
567566
return;
568567
}
@@ -775,7 +774,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
775774

776775
private getInitialFilesToOpen(): { filesToOpenOrCreate?: IPath[], filesToDiff?: IPath[] } | undefined {
777776
const defaultLayout = this.environmentService.options?.defaultLayout;
778-
if (defaultLayout?.editors?.length && this.storageService.getBoolean(Settings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE)) {
777+
if (defaultLayout?.editors?.length && this.storageService.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE)) {
779778
this._openedDefaultEditors = true;
780779

781780
return {

src/vs/workbench/browser/web.main.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import { FileUserDataProvider } from 'vs/workbench/services/userData/common/file
3838
import { BACKUPS } from 'vs/platform/environment/common/environment';
3939
import { joinPath } from 'vs/base/common/resources';
4040
import { BrowserStorageService } from 'vs/platform/storage/browser/storageService';
41-
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
41+
import { IStorageService } from 'vs/platform/storage/common/storage';
4242
import { registerWindowDriver } from 'vs/platform/driver/browser/driver';
4343
import { BufferLogService } from 'vs/platform/log/common/bufferLog';
4444
import { FileLogService } from 'vs/platform/log/common/fileLogService';
@@ -51,7 +51,6 @@ import { coalesce } from 'vs/base/common/arrays';
5151
import { InMemoryFileSystemProvider } from 'vs/platform/files/common/inMemoryFilesystemProvider';
5252
import { WebResourceIdentityService, IResourceIdentityService } from 'vs/platform/resource/common/resourceIdentityService';
5353
import { ICommandService } from 'vs/platform/commands/common/commands';
54-
import { Settings } from 'vs/workbench/browser/layout';
5554

5655
class BrowserMain extends Disposable {
5756

@@ -65,11 +64,6 @@ class BrowserMain extends Disposable {
6564
async open(): Promise<IWorkbench> {
6665
const services = await this.initServices();
6766

68-
const firstOpen = services.storageService.getBoolean(Settings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE);
69-
if (firstOpen === undefined || firstOpen) {
70-
services.storageService.store(Settings.WORKSPACE_FIRST_OPEN, !(firstOpen ?? false), StorageScope.WORKSPACE);
71-
}
72-
7367
await domContentLoaded();
7468
mark('willStartWorkbench');
7569

0 commit comments

Comments
 (0)