diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index b98c0103c54..c2dc6e8aa81 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -6,7 +6,7 @@ import URI, { UriComponents } from 'vs/base/common/uri'; import { TPromise, PPromise } from 'vs/base/common/winjs.base'; -import { ExtHostContext, MainContext, IExtHostContext, MainThreadFileSystemShape, ExtHostFileSystemShape } from '../node/extHost.protocol'; +import { ExtHostContext, MainContext, IExtHostContext, MainThreadFileSystemShape, ExtHostFileSystemShape, IFileChangeDto } from '../node/extHost.protocol'; import { IFileService, IFileSystemProvider, IStat, IFileChange } from 'vs/platform/files/common/files'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import Event, { Emitter } from 'vs/base/common/event'; @@ -50,7 +50,7 @@ export class MainThreadFileSystem implements MainThreadFileSystemShape { this._workspaceEditingService.addFolders([{ uri: URI.revive(data) }], true).done(null, onUnexpectedError); } - $onFileSystemChange(handle: number, changes: IFileChange[]): void { + $onFileSystemChange(handle: number, changes: IFileChangeDto[]): void { this._provider.get(handle).$onFileSystemChange(changes); } @@ -118,8 +118,12 @@ class RemoteFileSystemProvider implements IFileSystemProvider, ISearchResultProv this._onDidChange.dispose(); } - $onFileSystemChange(changes: IFileChange[]): void { - this._onDidChange.fire(changes); + $onFileSystemChange(changes: IFileChangeDto[]): void { + this._onDidChange.fire(changes.map(RemoteFileSystemProvider._createFileChange)); + } + + private static _createFileChange(dto: IFileChangeDto): IFileChange { + return { resource: URI.revive(dto.resource), type: dto.type }; } // --- forwarding calls diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 44ca4d7f3cd..a08706a7e6b 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -48,7 +48,7 @@ import { ITreeItem } from 'vs/workbench/common/views'; import { ThemeColor } from 'vs/platform/theme/common/themeService'; import { IDisposable } from 'vs/base/common/lifecycle'; import { SerializedError } from 'vs/base/common/errors'; -import { IStat, IFileChange } from 'vs/platform/files/common/files'; +import { IStat, FileChangeType } from 'vs/platform/files/common/files'; import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { ParsedArgs } from 'vs/platform/environment/common/environment'; import { CommentRule, CharacterPair, EnterAction } from 'vs/editor/common/modes/languageConfiguration'; @@ -366,12 +366,17 @@ export interface MainThreadWorkspaceShape extends IDisposable { $saveAll(includeUntitled?: boolean): Thenable; } +export interface IFileChangeDto { + resource: UriComponents; + type: FileChangeType; +} + export interface MainThreadFileSystemShape extends IDisposable { $registerFileSystemProvider(handle: number, scheme: string): void; $unregisterFileSystemProvider(handle: number): void; $onDidAddFileSystemRoot(root: UriComponents): void; - $onFileSystemChange(handle: number, resource: IFileChange[]): void; + $onFileSystemChange(handle: number, resource: IFileChangeDto[]): void; $reportFileChunk(handle: number, session: number, chunk: number[] | null): void; $handleFindMatch(handle: number, session, data: UriComponents | [UriComponents, ILineMatch]): void;