UNPKG

sussudio

Version:

An unofficial VS Code Internal API

61 lines (60 loc) 3.99 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; import { Emitter } from "../../../base/common/event.mjs"; import { MutableDisposable } from "../../../base/common/lifecycle.mjs"; import { IMainProcessService } from "../../ipc/electron-sandbox/services.mjs"; import { ILogService } from "../../log/common/log.mjs"; import { AbstractUserDataProfileStorageService, IUserDataProfileStorageService } from "../common/userDataProfileStorageService.mjs"; import { isProfileUsingDefaultStorage, IStorageService } from "../../storage/common/storage.mjs"; import { ApplicationStorageDatabaseClient, ProfileStorageDatabaseClient } from "../../storage/common/storageIpc.mjs"; import { IUserDataProfilesService, reviveProfile } from "../common/userDataProfile.mjs"; import { registerSingleton } from "../../instantiation/common/extensions.mjs"; let UserDataProfileStorageService = class UserDataProfileStorageService extends AbstractUserDataProfileStorageService { mainProcessService; _onDidChange; onDidChange; constructor(mainProcessService, userDataProfilesService, storageService, logService) { super(storageService); this.mainProcessService = mainProcessService; const channel = mainProcessService.getChannel('profileStorageListener'); const disposable = this._register(new MutableDisposable()); this._onDidChange = this._register(new Emitter({ // Start listening to profile storage changes only when someone is listening onWillAddFirstListener: () => { disposable.value = channel.listen('onDidChange')(e => { logService.trace('profile storage changes', e); this._onDidChange.fire({ targetChanges: e.targetChanges.map(profile => reviveProfile(profile, userDataProfilesService.profilesHome.scheme)), valueChanges: e.valueChanges.map(e => ({ ...e, profile: reviveProfile(e.profile, userDataProfilesService.profilesHome.scheme) })) }); }); }, // Stop listening to profile storage changes when no one is listening onDidRemoveLastListener: () => disposable.value = undefined })); this.onDidChange = this._onDidChange.event; } async createStorageDatabase(profile) { const storageChannel = this.mainProcessService.getChannel('storage'); return isProfileUsingDefaultStorage(profile) ? new ApplicationStorageDatabaseClient(storageChannel) : new ProfileStorageDatabaseClient(storageChannel, profile); } }; UserDataProfileStorageService = __decorate([ __param(0, IMainProcessService), __param(1, IUserDataProfilesService), __param(2, IStorageService), __param(3, ILogService) ], UserDataProfileStorageService); export { UserDataProfileStorageService }; registerSingleton(IUserDataProfileStorageService, UserDataProfileStorageService, 1 /* InstantiationType.Delayed */);