Trigger sync when sync viewlet is opened

This commit is contained in:
Sandeep Somavarapu 2020-05-07 10:29:12 +02:00
parent a00a441b7e
commit ff8902990d
2 changed files with 13 additions and 20 deletions

View file

@ -9,10 +9,10 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic
import { SettingsEditor2Input, KeybindingsEditorInput, PreferencesEditorInput } from 'vs/workbench/services/preferences/common/preferencesEditorInput';
import { isEqual } from 'vs/base/common/resources';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
import { VIEWLET_ID } from 'vs/workbench/contrib/extensions/common/extensions';
import { IEditorInput } from 'vs/workbench/common/editor';
import { IViewlet } from 'vs/workbench/common/viewlet';
import { IViewsService } from 'vs/workbench/common/views';
import { VIEW_CONTAINER_ID } from 'vs/workbench/contrib/userDataSync/browser/userDataSyncView';
export class UserDataSyncTrigger extends Disposable {
@ -22,24 +22,15 @@ export class UserDataSyncTrigger extends Disposable {
constructor(
@IEditorService editorService: IEditorService,
@IWorkbenchEnvironmentService private readonly workbenchEnvironmentService: IWorkbenchEnvironmentService,
@IViewletService viewletService: IViewletService,
@IViewsService viewsService: IViewsService,
) {
super();
this._register(Event.any<string | undefined>(
Event.map(editorService.onDidActiveEditorChange, () => this.getUserDataEditorInputSource(editorService.activeEditor)),
Event.map(viewletService.onDidViewletOpen, viewlet => this.getUserDataViewletSource(viewlet))
)(source => {
if (source) {
this._onDidTriggerSync.fire(source);
}
}));
}
private getUserDataViewletSource(viewlet: IViewlet): string | undefined {
if (viewlet.getId() === VIEWLET_ID) {
return 'extensionsViewlet';
}
return undefined;
this._register(
Event.filter(
Event.any<string | undefined>(
Event.map(editorService.onDidActiveEditorChange, () => this.getUserDataEditorInputSource(editorService.activeEditor)),
Event.map(Event.filter(viewsService.onDidChangeViewContainerVisibility, e => [VIEWLET_ID, VIEW_CONTAINER_ID].includes(e.id) && e.visible), e => e.id)
), source => source !== undefined)(source => this._onDidTriggerSync.fire(source!)));
}
private getUserDataEditorInputSource(editorInput: IEditorInput | undefined): string | undefined {

View file

@ -21,6 +21,8 @@ import { pad, uppercaseFirstLetter } from 'vs/base/common/strings';
import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer';
import { Codicon } from 'vs/base/common/codicons';
export const VIEW_CONTAINER_ID = 'workbench.view.sync';
export class UserDataSyncViewContribution implements IWorkbenchContribution {
constructor(
@ -36,11 +38,11 @@ export class UserDataSyncViewContribution implements IWorkbenchContribution {
private registerSyncViewContainer(): ViewContainer {
return Registry.as<IViewContainersRegistry>(Extensions.ViewContainersRegistry).registerViewContainer(
{
id: 'workbench.view.sync',
id: VIEW_CONTAINER_ID,
name: localize('sync preferences', "Preferences Sync"),
ctorDescriptor: new SyncDescriptor(
ViewPaneContainer,
['workbench.view.sync', { mergeViewWithContainerWhenSingleView: true }]
[VIEW_CONTAINER_ID, { mergeViewWithContainerWhenSingleView: true }]
),
icon: Codicon.sync.classNames,
hideIfEmpty: true,