mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-06 01:25:38 -05:00
Merge from vscode 3c6f6af7347d38e87bc6406024e8dcf9e9bce229 (#8962)
* Merge from vscode 3c6f6af7347d38e87bc6406024e8dcf9e9bce229 * skip failing tests * update mac build image
This commit is contained in:
committed by
Karl Burtram
parent
0eaee18dc4
commit
fefe1454de
@@ -18,6 +18,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
|
||||
import { IStringDictionary } from 'vs/base/common/collections';
|
||||
import { FormattingOptions } from 'vs/base/common/jsonFormatter';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { isEqual } from 'vs/base/common/resources';
|
||||
|
||||
export const CONFIGURATION_SYNC_STORE_KEY = 'configurationSync.store';
|
||||
|
||||
@@ -122,15 +123,18 @@ export interface IUserData {
|
||||
content: string | null;
|
||||
}
|
||||
|
||||
export enum UserDataSyncStoreErrorCode {
|
||||
export enum UserDataSyncErrorCode {
|
||||
TooLarge = 'TooLarge',
|
||||
Unauthroized = 'Unauthroized',
|
||||
Rejected = 'Rejected',
|
||||
Unknown = 'Unknown'
|
||||
Unknown = 'Unknown',
|
||||
TooManyFailures = 'TooManyFailures',
|
||||
ConnectionRefused = 'ConnectionRefused'
|
||||
}
|
||||
|
||||
export class UserDataSyncStoreError extends Error {
|
||||
export class UserDataSyncError extends Error {
|
||||
|
||||
constructor(message: string, public readonly code: UserDataSyncStoreErrorCode) {
|
||||
constructor(message: string, public readonly code: UserDataSyncErrorCode, public readonly source?: SyncSource) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
@@ -138,22 +142,20 @@ export class UserDataSyncStoreError extends Error {
|
||||
|
||||
export interface IUserDataSyncStore {
|
||||
url: string;
|
||||
name: string;
|
||||
account: string;
|
||||
authenticationProviderId: string;
|
||||
}
|
||||
|
||||
export function getUserDataSyncStore(configurationService: IConfigurationService): IUserDataSyncStore | undefined {
|
||||
const value = configurationService.getValue<IUserDataSyncStore>(CONFIGURATION_SYNC_STORE_KEY);
|
||||
return value && value.url && value.name && value.account && value.authenticationProviderId ? value : undefined;
|
||||
return value && value.url && value.authenticationProviderId ? value : undefined;
|
||||
}
|
||||
|
||||
export const IUserDataSyncStoreService = createDecorator<IUserDataSyncStoreService>('IUserDataSyncStoreService');
|
||||
export interface IUserDataSyncStoreService {
|
||||
_serviceBrand: undefined;
|
||||
readonly userDataSyncStore: IUserDataSyncStore | undefined;
|
||||
read(key: string, oldValue: IUserData | null): Promise<IUserData>;
|
||||
write(key: string, content: string, ref: string | null): Promise<string>;
|
||||
read(key: string, oldValue: IUserData | null, source?: SyncSource): Promise<IUserData>;
|
||||
write(key: string, content: string, ref: string | null, source?: SyncSource): Promise<string>;
|
||||
clear(): Promise<void>;
|
||||
}
|
||||
|
||||
@@ -172,7 +174,7 @@ export const enum SyncSource {
|
||||
Settings = 'Settings',
|
||||
Keybindings = 'Keybindings',
|
||||
Extensions = 'Extensions',
|
||||
UIState = 'UI State'
|
||||
GlobalState = 'GlobalState'
|
||||
}
|
||||
|
||||
export const enum SyncStatus {
|
||||
@@ -188,14 +190,21 @@ export interface ISynchroniser {
|
||||
readonly onDidChangeLocal: Event<void>;
|
||||
pull(): Promise<void>;
|
||||
push(): Promise<void>;
|
||||
sync(_continue?: boolean): Promise<boolean>;
|
||||
stop(): void;
|
||||
sync(): Promise<void>;
|
||||
stop(): Promise<void>;
|
||||
restart(): Promise<void>;
|
||||
hasPreviouslySynced(): Promise<boolean>
|
||||
hasRemoteData(): Promise<boolean>;
|
||||
hasLocalData(): Promise<boolean>;
|
||||
resetLocal(): Promise<void>;
|
||||
}
|
||||
|
||||
export interface IUserDataSynchroniser extends ISynchroniser {
|
||||
readonly source: SyncSource;
|
||||
getRemoteContent(): Promise<string | null>;
|
||||
resolveConflicts(content: string): Promise<void>;
|
||||
}
|
||||
|
||||
export const IUserDataSyncService = createDecorator<IUserDataSyncService>('IUserDataSyncService');
|
||||
export interface IUserDataSyncService extends ISynchroniser {
|
||||
_serviceBrand: any;
|
||||
@@ -203,12 +212,14 @@ export interface IUserDataSyncService extends ISynchroniser {
|
||||
isFirstTimeSyncAndHasUserData(): Promise<boolean>;
|
||||
reset(): Promise<void>;
|
||||
resetLocal(): Promise<void>;
|
||||
removeExtension(identifier: IExtensionIdentifier): Promise<void>;
|
||||
getRemoteContent(source: SyncSource): Promise<string | null>;
|
||||
resolveConflictsAndContinueSync(content: string): Promise<void>;
|
||||
}
|
||||
|
||||
export const IUserDataAutoSyncService = createDecorator<IUserDataAutoSyncService>('IUserDataAutoSyncService');
|
||||
export interface IUserDataAutoSyncService {
|
||||
_serviceBrand: any;
|
||||
onError: Event<{ code: UserDataSyncErrorCode, source?: SyncSource }>;
|
||||
triggerAutoSync(): Promise<void>;
|
||||
}
|
||||
|
||||
@@ -218,7 +229,6 @@ export interface IUserDataSyncUtilService {
|
||||
updateConfigurationValue(key: string, value: any): Promise<void>;
|
||||
resolveUserBindings(userbindings: string[]): Promise<IStringDictionary<string>>;
|
||||
resolveFormattingOptions(resource: URI): Promise<FormattingOptions>;
|
||||
ignoreExtensionsToSync(extensionIdentifiers: IExtensionIdentifier[]): Promise<void>;
|
||||
}
|
||||
|
||||
export const IUserDataAuthTokenService = createDecorator<IUserDataAuthTokenService>('IUserDataAuthTokenService');
|
||||
@@ -242,11 +252,19 @@ export interface IConflictSetting {
|
||||
}
|
||||
|
||||
export const ISettingsSyncService = createDecorator<ISettingsSyncService>('ISettingsSyncService');
|
||||
export interface ISettingsSyncService extends ISynchroniser {
|
||||
export interface ISettingsSyncService extends IUserDataSynchroniser {
|
||||
_serviceBrand: any;
|
||||
readonly onDidChangeConflicts: Event<IConflictSetting[]>;
|
||||
readonly conflicts: IConflictSetting[];
|
||||
resolveConflicts(resolvedConflicts: { key: string, value: any | undefined }[]): Promise<void>;
|
||||
resolveSettingsConflicts(resolvedConflicts: { key: string, value: any | undefined }[]): Promise<void>;
|
||||
}
|
||||
|
||||
export const CONTEXT_SYNC_STATE = new RawContextKey<string>('syncStatus', SyncStatus.Uninitialized);
|
||||
|
||||
export const USER_DATA_SYNC_SCHEME = 'vscode-userdata-sync';
|
||||
export function toRemoteContentResource(source: SyncSource): URI {
|
||||
return URI.from({ scheme: USER_DATA_SYNC_SCHEME, path: `${source}/remoteContent` });
|
||||
}
|
||||
export function getSyncSourceFromRemoteContentResource(uri: URI): SyncSource | undefined {
|
||||
return [SyncSource.Settings, SyncSource.Keybindings, SyncSource.Extensions, SyncSource.GlobalState].filter(source => isEqual(uri, toRemoteContentResource(source)))[0];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user