提交 174bf8b7 编写于 作者: B Benjamin Pasero

sqlite - detect cross window changes to localStorage

上级 ee34a6ec
......@@ -10,6 +10,8 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment'
import { IWorkspaceStorageChangeEvent, INextStorage2Service, StorageScope } from 'vs/platform/storage2/common/storage2';
import { Storage, IStorageLoggingOptions } from 'vs/base/node/storage';
import { IStorageService, StorageScope as LocalStorageScope } from 'vs/platform/storage/common/storage';
import { addDisposableListener } from 'vs/base/browser/dom';
import { startsWith } from 'vs/base/common/strings';
export class NextStorage2Service extends Disposable implements INextStorage2Service {
_serviceBrand: any;
......@@ -109,8 +111,21 @@ export class NextDelegatingStorageService extends Disposable implements INextSto
) {
super();
this.registerListeners();
}
private registerListeners(): void {
this._register(this.nextStorage2Service.onDidChangeStorage(e => this._onDidChangeStorage.fire(e)));
this._register(this.nextStorage2Service.onWillClose(e => this._onWillClose.fire()));
const globalKeyMarker = 'storage://global/';
this._register(addDisposableListener(window, 'storage', (e: StorageEvent) => {
if (startsWith(e.key, globalKeyMarker)) {
const key = e.key.substr(globalKeyMarker.length);
this._onDidChangeStorage.fire({ key, scope: StorageScope.GLOBAL });
}
}));
}
get(key: string, scope: StorageScope, fallbackValue?: any): string {
......
......@@ -36,7 +36,7 @@ import { IWorkspacesService, ISingleFolderWorkspaceIdentifier } from 'vs/platfor
import { createSpdLogService } from 'vs/platform/log/node/spdlogService';
import * as fs from 'fs';
import { ConsoleLogService, MultiplexLogService, ILogService } from 'vs/platform/log/common/log';
import { NextStorage2Service, NextDelegatingStorageService } from 'vs/platform/storage2/node/nextStorage2Service';
import { NextStorage2Service, NextDelegatingStorageService } from 'vs/platform/storage2/electron-browser/nextStorage2Service';
import { IssueChannelClient } from 'vs/platform/issue/node/issueIpc';
import { IIssueService } from 'vs/platform/issue/common/issue';
import { LogLevelSetterChannelClient, FollowerLogService } from 'vs/platform/log/node/logIpc';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册