Files
azuredatastudio/extensions/cms/src/extension.ts
Charles Gagnon 3f5bdb86cd Move CMS saved servers to be stored in memento instead of config (#6535)
* Move CMS saved servers to be stored in memento instead of config

* Add in code to port old servers into memento
2019-07-30 16:47:11 -07:00

57 lines
2.4 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as vscode from 'vscode';
import CmsResourceController from './controllers/cmsResourceController';
import { AppContext } from './appContext';
import ControllerBase from './controllers/controllerBase';
import { ApiWrapper } from './apiWrapper';
import { CmsUtils } from './cmsUtils';
import { ICmsResourceNodeInfo } from './cmsResource/tree/baseTreeNodes';
let controllers: ControllerBase[] = [];
// this method is called when your extension is activated
// your extension is activated the very first time the command is executed
export async function activate(extensionContext: vscode.ExtensionContext): Promise<void> {
const apiWrapper = new ApiWrapper();
const cmsUtils = new CmsUtils(extensionContext.globalState);
const appContext = new AppContext(extensionContext, apiWrapper, cmsUtils);
const activations: Thenable<boolean>[] = [];
await portSavedConfigServers(appContext);
const cmsResourceController = new CmsResourceController(appContext);
controllers.push(cmsResourceController);
extensionContext.subscriptions.push(cmsResourceController);
activations.push(cmsResourceController.activate());
}
// this method is called when your extension is deactivated
export function deactivate(): void {
for (let controller of controllers) {
controller.deactivate();
}
}
/**
* Helper method to port over servers that were previously saved in the configuration (in versions <= 0.3.0 of the extension)
* @param appContext The context to use to store the new saved servers
*/
async function portSavedConfigServers(appContext: AppContext): Promise<void> {
const config: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration('centralManagementServers');
if (config) {
const oldServers = config.get<ICmsResourceNodeInfo[]>('servers');
if (oldServers) {
oldServers.forEach(s => appContext.cmsUtils.cacheRegisteredCmsServer(s.name, s.description, s.ownerUri, s.connection));
// Now delete the config value since we don't need it anymore
await config.update('servers', undefined, true);
}
}
}