Changed controller connection storage from config to memento in big data cluster extension (#6372)

This commit is contained in:
Gene Lee
2019-07-12 17:06:06 -06:00
committed by GitHub
parent 969476e49e
commit 76ebe8e84d
2 changed files with 14 additions and 9 deletions

View File

@@ -14,9 +14,15 @@ import { ControllerRootNode, ControllerNode } from './controllerTreeNode';
import { IEndPoint } from '../controller/clusterControllerApi'; import { IEndPoint } from '../controller/clusterControllerApi';
import { showErrorMessage } from '../utils'; import { showErrorMessage } from '../utils';
const ConfigNamespace = 'clusterControllers';
const CredentialNamespace = 'clusterControllerCredentials'; const CredentialNamespace = 'clusterControllerCredentials';
interface IControllerInfoSlim {
url: string;
username: string;
password?: string;
rememberPassword: boolean;
}
export class ControllerTreeDataProvider implements vscode.TreeDataProvider<TreeNode>, IControllerTreeChangeHandler { export class ControllerTreeDataProvider implements vscode.TreeDataProvider<TreeNode>, IControllerTreeChangeHandler {
private _onDidChangeTreeData: vscode.EventEmitter<TreeNode> = new vscode.EventEmitter<TreeNode>(); private _onDidChangeTreeData: vscode.EventEmitter<TreeNode> = new vscode.EventEmitter<TreeNode>();
@@ -24,7 +30,7 @@ export class ControllerTreeDataProvider implements vscode.TreeDataProvider<TreeN
private root: ControllerRootNode; private root: ControllerRootNode;
private credentialProvider: azdata.CredentialProvider; private credentialProvider: azdata.CredentialProvider;
constructor() { constructor(private memento: vscode.Memento) {
this.root = new ControllerRootNode(this); this.root = new ControllerRootNode(this);
this.loadSavedControllers(); this.loadSavedControllers();
} }
@@ -69,9 +75,8 @@ export class ControllerTreeDataProvider implements vscode.TreeDataProvider<TreeN
} }
public async loadSavedControllers(): Promise<void> { public async loadSavedControllers(): Promise<void> {
let config = vscode.workspace.getConfiguration(ConfigNamespace); let controllers: IControllerInfoSlim[] = this.memento.get('controllers');
if (config && config.controllers) { if (controllers) {
let controllers = config.controllers;
this.root.clearChildren(); this.root.clearChildren();
for (let c of controllers) { for (let c of controllers) {
let password = undefined; let password = undefined;
@@ -90,7 +95,7 @@ export class ControllerTreeDataProvider implements vscode.TreeDataProvider<TreeN
public async saveControllers(): Promise<void> { public async saveControllers(): Promise<void> {
let controllers = this.root.children.map(e => { let controllers = this.root.children.map(e => {
let controller = e as ControllerNode; let controller = e as ControllerNode;
return { return <IControllerInfoSlim>{
url: controller.url, url: controller.url,
username: controller.username, username: controller.username,
password: controller.password, password: controller.password,
@@ -99,7 +104,7 @@ export class ControllerTreeDataProvider implements vscode.TreeDataProvider<TreeN
}); });
let controllersWithoutPassword = controllers.map(e => { let controllersWithoutPassword = controllers.map(e => {
return { return <IControllerInfoSlim>{
url: e.url, url: e.url,
username: e.username, username: e.username,
rememberPassword: e.rememberPassword rememberPassword: e.rememberPassword
@@ -107,7 +112,7 @@ export class ControllerTreeDataProvider implements vscode.TreeDataProvider<TreeN
}); });
try { try {
await vscode.workspace.getConfiguration(ConfigNamespace).update('controllers', controllersWithoutPassword, true); await this.memento.update('controllers', controllersWithoutPassword);
} catch (error) { } catch (error) {
showErrorMessage(error); showErrorMessage(error);
} }

View File

@@ -17,7 +17,7 @@ const localize = nls.loadMessageBundle();
export function activate(extensionContext: vscode.ExtensionContext) { export function activate(extensionContext: vscode.ExtensionContext) {
IconPath.setExtensionContext(extensionContext); IconPath.setExtensionContext(extensionContext);
let treeDataProvider = new ControllerTreeDataProvider(); let treeDataProvider = new ControllerTreeDataProvider(extensionContext.globalState);
registerTreeDataProvider(treeDataProvider); registerTreeDataProvider(treeDataProvider);
registerCommands(treeDataProvider); registerCommands(treeDataProvider);