/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IAuthenticationProvider, SyncStatus, SyncResource, Change, MergeState } from 'vs/platform/userDataSync/common/userDataSync'; import { Event } from 'vs/base/common/event'; import { RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { localize } from 'vs/nls'; import { URI } from 'vs/base/common/uri'; export interface IUserDataSyncAccount { readonly authenticationProviderId: string; readonly accountName: string; readonly accountId: string; } export interface IUserDataSyncPreview { readonly onDidChangeResources: Event>; readonly resources: ReadonlyArray; accept(syncResource: SyncResource, resource: URI, content: string): Promise; merge(resource?: URI): Promise; discard(resource?: URI): Promise; pull(): Promise; push(): Promise; apply(): Promise; cancel(): Promise; } export interface IUserDataSyncResource { readonly syncResource: SyncResource; readonly local: URI; readonly remote: URI; readonly preview: URI; readonly localChange: Change; readonly remoteChange: Change; readonly mergeState: MergeState; } export const IUserDataSyncWorkbenchService = createDecorator('IUserDataSyncWorkbenchService'); export interface IUserDataSyncWorkbenchService { _serviceBrand: any; readonly authenticationProviders: IAuthenticationProvider[]; readonly all: IUserDataSyncAccount[]; readonly current: IUserDataSyncAccount | undefined; readonly accountStatus: AccountStatus; readonly onDidChangeAccountStatus: Event; readonly userDataSyncPreview: IUserDataSyncPreview; turnOn(): Promise; turnoff(everyWhere: boolean): Promise; signIn(): Promise; resetSyncedData(): Promise; showSyncActivity(): Promise; } export function getSyncAreaLabel(source: SyncResource): string { switch (source) { case SyncResource.Settings: return localize('settings', "Settings"); case SyncResource.Keybindings: return localize('keybindings', "Keyboard Shortcuts"); case SyncResource.Snippets: return localize('snippets', "User Snippets"); case SyncResource.Extensions: return localize('extensions', "Extensions"); case SyncResource.GlobalState: return localize('ui state label', "UI State"); } } export const enum AccountStatus { Uninitialized = 'uninitialized', Unavailable = 'unavailable', Available = 'available', } // Contexts export const CONTEXT_SYNC_STATE = new RawContextKey('syncStatus', SyncStatus.Uninitialized); export const CONTEXT_SYNC_ENABLEMENT = new RawContextKey('syncEnabled', false); export const CONTEXT_ACCOUNT_STATE = new RawContextKey('userDataSyncAccountStatus', AccountStatus.Uninitialized); export const CONTEXT_ENABLE_ACTIVITY_VIEWS = new RawContextKey(`enableSyncActivityViews`, false); export const CONTEXT_ENABLE_MANUAL_SYNC_VIEW = new RawContextKey(`enableManualSyncView`, false); // Commands export const CONFIGURE_SYNC_COMMAND_ID = 'workbench.userDataSync.actions.configure'; export const SHOW_SYNC_LOG_COMMAND_ID = 'workbench.userDataSync.actions.showLog'; // VIEWS export const SYNC_VIEW_CONTAINER_ID = 'workbench.view.sync'; export const MANUAL_SYNC_VIEW_ID = 'workbench.views.manualSyncView';