提交 7d17f6f9 编写于 作者: S Sandeep Somavarapu

introduce authority for sync resources

上级 3ceb796c
...@@ -348,18 +348,19 @@ export const CONTEXT_SYNC_ENABLEMENT = new RawContextKey<boolean>('syncEnabled', ...@@ -348,18 +348,19 @@ export const CONTEXT_SYNC_ENABLEMENT = new RawContextKey<boolean>('syncEnabled',
export const USER_DATA_SYNC_SCHEME = 'vscode-userdata-sync'; export const USER_DATA_SYNC_SCHEME = 'vscode-userdata-sync';
export const PREVIEW_QUERY = 'preview=true'; export const PREVIEW_QUERY = 'preview=true';
export function toSyncResourceFromSource(source: SyncSource, ref?: string): URI { export function toRemoteSyncResourceFromSource(source: SyncSource, ref?: string): URI {
return toSyncResource(getResourceKey(source), ref); return toRemoteSyncResource(getResourceKeyFromSyncSource(source), ref);
} }
export function toSyncResource(resourceKey: ResourceKey, ref?: string): URI { export function toRemoteSyncResource(resourceKey: ResourceKey, ref?: string): URI {
return URI.from({ scheme: USER_DATA_SYNC_SCHEME, path: `${resourceKey}/${ref ? ref : 'latest'}` }); return URI.from({ scheme: USER_DATA_SYNC_SCHEME, authority: 'remote', path: `/${resourceKey}/${ref ? ref : 'latest'}` });
} }
export function resolveSyncResource(resource: URI): { resourceKey: ResourceKey, ref?: string } | null { export function resolveSyncResource(resource: URI): { remote: boolean, resourceKey: ResourceKey, ref?: string } | null {
const remote = resource.authority === 'remote';
const resourceKey: ResourceKey = basename(dirname(resource)) as ResourceKey; const resourceKey: ResourceKey = basename(dirname(resource)) as ResourceKey;
const ref = basename(resource); const ref = basename(resource);
if (resourceKey && ref) { if (resourceKey && ref) {
return { resourceKey, ref: ref !== 'latest' ? ref : undefined }; return { remote, resourceKey, ref: ref !== 'latest' ? ref : undefined };
} }
return null; return null;
} }
...@@ -373,7 +374,8 @@ export function getSyncSourceFromPreviewResource(uri: URI, environmentService: I ...@@ -373,7 +374,8 @@ export function getSyncSourceFromPreviewResource(uri: URI, environmentService: I
} }
return undefined; return undefined;
} }
export function getResourceKey(source: SyncSource): ResourceKey {
export function getResourceKeyFromSyncSource(source: SyncSource): ResourceKey {
switch (source) { switch (source) {
case SyncSource.Settings: return 'settings'; case SyncSource.Settings: return 'settings';
case SyncSource.Keybindings: return 'keybindings'; case SyncSource.Keybindings: return 'keybindings';
...@@ -381,7 +383,8 @@ export function getResourceKey(source: SyncSource): ResourceKey { ...@@ -381,7 +383,8 @@ export function getResourceKey(source: SyncSource): ResourceKey {
case SyncSource.GlobalState: return 'globalState'; case SyncSource.GlobalState: return 'globalState';
} }
} }
export function getSyncSource(resourceKey: ResourceKey): SyncSource {
export function getSyncSourceFromResourceKey(resourceKey: ResourceKey): SyncSource {
switch (resourceKey) { switch (resourceKey) {
case 'settings': return SyncSource.Settings; case 'settings': return SyncSource.Settings;
case 'keybindings': return SyncSource.Keybindings; case 'keybindings': return SyncSource.Keybindings;
......
...@@ -183,9 +183,9 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ ...@@ -183,9 +183,9 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
const synchronizer = this.synchronisers.filter(s => s.resourceKey === result.resourceKey)[0]; const synchronizer = this.synchronisers.filter(s => s.resourceKey === result.resourceKey)[0];
if (synchronizer) { if (synchronizer) {
if (PREVIEW_QUERY === resource.query) { if (PREVIEW_QUERY === resource.query) {
return synchronizer.getRemoteContentFromPreview(); return result.remote ? synchronizer.getRemoteContentFromPreview() : null;
} }
return synchronizer.getRemoteContent(result.ref, resource.fragment); return result.remote ? synchronizer.getRemoteContent(result.ref, resource.fragment) : null;
} }
} }
return null; return null;
......
...@@ -30,7 +30,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti ...@@ -30,7 +30,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification';
import { IQuickInputService, IQuickPickItem, IQuickPickSeparator } from 'vs/platform/quickinput/common/quickInput'; import { IQuickInputService, IQuickPickItem, IQuickPickSeparator } from 'vs/platform/quickinput/common/quickInput';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { CONTEXT_SYNC_STATE, getUserDataSyncStore, ISyncConfiguration, IUserDataAutoSyncService, IUserDataSyncService, IUserDataSyncStore, registerConfiguration, SyncSource, SyncStatus, UserDataSyncError, UserDataSyncErrorCode, USER_DATA_SYNC_SCHEME, IUserDataSyncEnablementService, ResourceKey, getSyncSourceFromPreviewResource, CONTEXT_SYNC_ENABLEMENT, toSyncResourceFromSource, PREVIEW_QUERY, resolveSyncResource, getSyncSource } from 'vs/platform/userDataSync/common/userDataSync'; import { CONTEXT_SYNC_STATE, getUserDataSyncStore, ISyncConfiguration, IUserDataAutoSyncService, IUserDataSyncService, IUserDataSyncStore, registerConfiguration, SyncSource, SyncStatus, UserDataSyncError, UserDataSyncErrorCode, USER_DATA_SYNC_SCHEME, IUserDataSyncEnablementService, ResourceKey, getSyncSourceFromPreviewResource, CONTEXT_SYNC_ENABLEMENT, toRemoteSyncResourceFromSource, PREVIEW_QUERY, resolveSyncResource, getSyncSourceFromResourceKey } from 'vs/platform/userDataSync/common/userDataSync';
import { FloatingClickWidget } from 'vs/workbench/browser/parts/editor/editorWidgets'; import { FloatingClickWidget } from 'vs/workbench/browser/parts/editor/editorWidgets';
import { GLOBAL_ACTIVITY_ID } from 'vs/workbench/common/activity'; import { GLOBAL_ACTIVITY_ID } from 'vs/workbench/common/activity';
import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
...@@ -354,7 +354,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo ...@@ -354,7 +354,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
private async acceptRemote(syncSource: SyncSource) { private async acceptRemote(syncSource: SyncSource) {
try { try {
const contents = await this.userDataSyncService.resolveContent(toSyncResourceFromSource(syncSource).with({ query: PREVIEW_QUERY })); const contents = await this.userDataSyncService.resolveContent(toRemoteSyncResourceFromSource(syncSource).with({ query: PREVIEW_QUERY }));
if (contents) { if (contents) {
await this.userDataSyncService.accept(syncSource, contents); await this.userDataSyncService.accept(syncSource, contents);
} }
...@@ -754,7 +754,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo ...@@ -754,7 +754,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
label = localize('keybindings conflicts preview', "Keybindings Conflicts (Remote ↔ Local)"); label = localize('keybindings conflicts preview', "Keybindings Conflicts (Remote ↔ Local)");
} }
if (previewResource) { if (previewResource) {
const remoteContentResource = toSyncResourceFromSource(source).with({ query: PREVIEW_QUERY }); const remoteContentResource = toRemoteSyncResourceFromSource(source).with({ query: PREVIEW_QUERY });
await this.editorService.openEditor({ await this.editorService.openEditor({
leftResource: remoteContentResource, leftResource: remoteContentResource,
rightResource: previewResource, rightResource: previewResource,
...@@ -1130,7 +1130,7 @@ class AcceptChangesContribution extends Disposable implements IEditorContributio ...@@ -1130,7 +1130,7 @@ class AcceptChangesContribution extends Disposable implements IEditorContributio
this._register(this.acceptChangesButton.onClick(async () => { this._register(this.acceptChangesButton.onClick(async () => {
const model = this.editor.getModel(); const model = this.editor.getModel();
if (model) { if (model) {
const conflictsSource = (getSyncSourceFromPreviewResource(model.uri, this.environmentService) || getSyncSource(resolveSyncResource(model.uri)!.resourceKey))!; const conflictsSource = (getSyncSourceFromPreviewResource(model.uri, this.environmentService) || getSyncSourceFromResourceKey(resolveSyncResource(model.uri)!.resourceKey))!;
this.telemetryService.publicLog2<{ source: string, action: string }, SyncConflictsClassification>('sync/handleConflicts', { source: conflictsSource, action: isRemote ? 'acceptRemote' : 'acceptLocal' }); this.telemetryService.publicLog2<{ source: string, action: string }, SyncConflictsClassification>('sync/handleConflicts', { source: conflictsSource, action: isRemote ? 'acceptRemote' : 'acceptLocal' });
const syncAreaLabel = getSyncAreaLabel(conflictsSource); const syncAreaLabel = getSyncAreaLabel(conflictsSource);
const result = await this.dialogService.confirm({ const result = await this.dialogService.confirm({
......
...@@ -11,7 +11,7 @@ import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; ...@@ -11,7 +11,7 @@ import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { TreeViewPane, TreeView } from 'vs/workbench/browser/parts/views/treeView'; import { TreeViewPane, TreeView } from 'vs/workbench/browser/parts/views/treeView';
import { VIEW_CONTAINER } from 'vs/workbench/contrib/files/browser/explorerViewlet'; import { VIEW_CONTAINER } from 'vs/workbench/contrib/files/browser/explorerViewlet';
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { ALL_RESOURCE_KEYS, CONTEXT_SYNC_ENABLEMENT, IUserDataSyncStoreService, toSyncResource, resolveSyncResource } from 'vs/platform/userDataSync/common/userDataSync'; import { ALL_RESOURCE_KEYS, CONTEXT_SYNC_ENABLEMENT, IUserDataSyncStoreService, toRemoteSyncResource, resolveSyncResource } from 'vs/platform/userDataSync/common/userDataSync';
import { registerAction2, Action2, MenuId } from 'vs/platform/actions/common/actions'; import { registerAction2, Action2, MenuId } from 'vs/platform/actions/common/actions';
import { IContextKeyService, RawContextKey, ContextKeyExpr, ContextKeyEqualsExpr } from 'vs/platform/contextkey/common/contextkey'; import { IContextKeyService, RawContextKey, ContextKeyExpr, ContextKeyEqualsExpr } from 'vs/platform/contextkey/common/contextkey';
import { URI } from 'vs/base/common/uri'; import { URI } from 'vs/base/common/uri';
...@@ -175,7 +175,7 @@ class UserDataSyncHistoryViewDataProvider implements ITreeViewDataProvider { ...@@ -175,7 +175,7 @@ class UserDataSyncHistoryViewDataProvider implements ITreeViewDataProvider {
if (resourceKey) { if (resourceKey) {
const refHandles = await this.userDataSyncStoreService.getAllRefs(resourceKey); const refHandles = await this.userDataSyncStoreService.getAllRefs(resourceKey);
return refHandles.map(({ ref, created }) => { return refHandles.map(({ ref, created }) => {
const handle = toSyncResource(resourceKey, ref).toString(); const handle = toRemoteSyncResource(resourceKey, ref).toString();
return { return {
handle, handle,
collapsibleState: TreeItemCollapsibleState.None, collapsibleState: TreeItemCollapsibleState.None,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册