提交 d6d6fb2c 编写于 作者: S Sandeep Somavarapu

#93368 Replace biased util with using extUri based on fileservice provider's...

#93368 Replace biased util with using extUri based on fileservice provider's case sensiive capability
上级 4c030c46
......@@ -7,13 +7,13 @@ import { Event, Emitter } from 'vs/base/common/event';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
import { IFileSystemProviderWithFileReadWriteCapability, IFileChange, IWatchOptions, IStat, FileOverwriteOptions, FileType, FileWriteOptions, FileDeleteOptions, FileSystemProviderCapabilities, IFileSystemProviderWithOpenReadWriteCloseCapability, FileOpenOptions, hasReadWriteCapability, hasOpenReadWriteCloseCapability, IFileSystemProviderWithFileReadStreamCapability, FileReadStreamOptions, hasFileReadStreamCapability } from 'vs/platform/files/common/files';
import { URI } from 'vs/base/common/uri';
import { extUriBiasedIgnorePathCase as resources } from 'vs/base/common/resources';
import { startsWith } from 'vs/base/common/strings';
import { BACKUPS } from 'vs/platform/environment/common/environment';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { CancellationToken } from 'vs/base/common/cancellation';
import { ReadableStreamEvents } from 'vs/base/common/stream';
import { ILogService } from 'vs/platform/log/common/log';
import { ExtUri, extUri, extUriIgnorePathCase } from 'vs/base/common/resources';
export class FileUserDataProvider extends Disposable implements
IFileSystemProviderWithFileReadWriteCapability,
......@@ -27,6 +27,7 @@ export class FileUserDataProvider extends Disposable implements
readonly onDidChangeFile: Event<readonly IFileChange[]> = this._onDidChangeFile.event;
private readonly userDataHome: URI;
private readonly extUri: ExtUri;
constructor(
private readonly fileSystemUserDataHome: URI,
......@@ -39,6 +40,9 @@ export class FileUserDataProvider extends Disposable implements
this.userDataHome = environmentService.userRoamingDataHome;
this.extUri = !!(this.capabilities & FileSystemProviderCapabilities.PathCaseSensitive) ? extUri : extUriIgnorePathCase;
// Not required to update extUri as capabilites will not change.
// Assumption: This path always exists
this._register(this.fileSystemProvider.watch(this.fileSystemUserDataHome, { recursive: false, excludes: [] }));
this._register(this.fileSystemProvider.onDidChangeFile(e => this.handleFileChanges(e)));
......@@ -135,21 +139,21 @@ export class FileUserDataProvider extends Disposable implements
}
private toFileSystemResource(userDataResource: URI): URI {
const relativePath = resources.relativePath(this.userDataHome, userDataResource)!;
const relativePath = this.extUri.relativePath(this.userDataHome, userDataResource)!;
if (startsWith(relativePath, BACKUPS)) {
return resources.joinPath(resources.dirname(this.fileSystemBackupsHome), relativePath);
return this.extUri.joinPath(this.extUri.dirname(this.fileSystemBackupsHome), relativePath);
}
return resources.joinPath(this.fileSystemUserDataHome, relativePath);
return this.extUri.joinPath(this.fileSystemUserDataHome, relativePath);
}
private toUserDataResource(fileSystemResource: URI): URI | null {
if (resources.isEqualOrParent(fileSystemResource, this.fileSystemUserDataHome)) {
const relativePath = resources.relativePath(this.fileSystemUserDataHome, fileSystemResource);
return relativePath ? resources.joinPath(this.userDataHome, relativePath) : this.userDataHome;
if (this.extUri.isEqualOrParent(fileSystemResource, this.fileSystemUserDataHome)) {
const relativePath = this.extUri.relativePath(this.fileSystemUserDataHome, fileSystemResource);
return relativePath ? this.extUri.joinPath(this.userDataHome, relativePath) : this.userDataHome;
}
if (resources.isEqualOrParent(fileSystemResource, this.fileSystemBackupsHome)) {
const relativePath = resources.relativePath(this.fileSystemBackupsHome, fileSystemResource);
return relativePath ? resources.joinPath(this.userDataHome, BACKUPS, relativePath) : resources.joinPath(this.userDataHome, BACKUPS);
if (this.extUri.isEqualOrParent(fileSystemResource, this.fileSystemBackupsHome)) {
const relativePath = this.extUri.relativePath(this.fileSystemBackupsHome, fileSystemResource);
return relativePath ? this.extUri.joinPath(this.userDataHome, BACKUPS, relativePath) : this.extUri.joinPath(this.userDataHome, BACKUPS);
}
return null;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册