mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Changed controller connection storage from config to memento in big data cluster extension (#6372)
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user