Null/undefined check editors (#7084)

* Null check editors

* Add console.errors to the null checks

* Change promises

* Fix typo

* Add output type & change returns
This commit is contained in:
Amir Omidi
2019-09-17 16:19:47 -07:00
committed by GitHub
parent 9b82b101cd
commit dca21bd3be
2 changed files with 65 additions and 35 deletions

View File

@@ -167,24 +167,23 @@ export const DE_NEW_QUERY_COMMAND_ID = 'dataExplorer.newQuery';
// New Query // New Query
CommandsRegistry.registerCommand({ CommandsRegistry.registerCommand({
id: DE_NEW_QUERY_COMMAND_ID, id: DE_NEW_QUERY_COMMAND_ID,
handler: (accessor, args: TreeViewItemHandleArg) => { handler: async (accessor, args: TreeViewItemHandleArg) => {
if (args.$treeItem) { if (args.$treeItem) {
const queryEditorService = accessor.get(IQueryEditorService); const queryEditorService = accessor.get(IQueryEditorService);
const connectionService = accessor.get(IConnectionManagementService); const connectionService = accessor.get(IConnectionManagementService);
const capabilitiesService = accessor.get(ICapabilitiesService); const capabilitiesService = accessor.get(ICapabilitiesService);
return queryEditorService.newSqlEditor().then((owner: IConnectableInput) => { const owner = await queryEditorService.newSqlEditor();
// Connect our editor to the input connection // Connect our editor to the input connection
let options: IConnectionCompletionOptions = { let options: IConnectionCompletionOptions = {
params: { connectionType: ConnectionType.editor, input: owner }, params: { connectionType: ConnectionType.editor, input: owner },
saveTheConnection: false, saveTheConnection: false,
showDashboard: false, showDashboard: false,
showConnectionDialogOnError: true, showConnectionDialogOnError: true,
showFirewallRuleOnError: true showFirewallRuleOnError: true
}; };
return connectionService.connect(new ConnectionProfile(capabilitiesService, args.$treeItem.payload), owner.uri, options); return connectionService.connect(new ConnectionProfile(capabilitiesService, args.$treeItem.payload), owner.uri, options);
});
} }
return Promise.resolve(true); return true;
} }
}); });
@@ -205,7 +204,7 @@ export class RunQueryAction extends QueryTaskbarAction {
this.label = nls.localize('runQueryLabel', "Run"); this.label = nls.localize('runQueryLabel', "Run");
} }
public run(): Promise<void> { public async run(): Promise<void> {
if (!this.editor.isSelectionEmpty()) { if (!this.editor.isSelectionEmpty()) {
if (this.isConnected(this.editor)) { if (this.isConnected(this.editor)) {
// If we are already connected, run the query // If we are already connected, run the query
@@ -216,10 +215,10 @@ export class RunQueryAction extends QueryTaskbarAction {
this.connectEditor(this.editor, RunQueryOnConnectionMode.executeQuery, this.editor.getSelection()); this.connectEditor(this.editor, RunQueryOnConnectionMode.executeQuery, this.editor.getSelection());
} }
} }
return Promise.resolve(null); return;
} }
public runCurrent(): Promise<void> { public async runCurrent(): Promise<void> {
if (!this.editor.isSelectionEmpty()) { if (!this.editor.isSelectionEmpty()) {
if (this.isConnected(this.editor)) { if (this.isConnected(this.editor)) {
// If we are already connected, run the query // If we are already connected, run the query
@@ -230,7 +229,7 @@ export class RunQueryAction extends QueryTaskbarAction {
this.connectEditor(this.editor, RunQueryOnConnectionMode.executeCurrentQuery, this.editor.getSelection(false)); this.connectEditor(this.editor, RunQueryOnConnectionMode.executeCurrentQuery, this.editor.getSelection(false));
} }
} }
return Promise.resolve(null); return;
} }
public runQuery(editor: QueryEditor, runCurrentStatement: boolean = false) { public runQuery(editor: QueryEditor, runCurrentStatement: boolean = false) {
@@ -276,11 +275,14 @@ export class CancelQueryAction extends QueryTaskbarAction {
this.label = nls.localize('cancelQueryLabel', "Cancel"); this.label = nls.localize('cancelQueryLabel', "Cancel");
} }
public run(): Promise<void> { public async run(): Promise<void> {
if (this.isConnected(this.editor)) { if (this.isConnected(this.editor)) {
if (!this.editor.input) {
console.error('editor input was null');
return;
}
this.queryModelService.cancelQuery(this.editor.input.uri); this.queryModelService.cancelQuery(this.editor.input.uri);
} }
return Promise.resolve(null);
} }
} }
@@ -300,7 +302,7 @@ export class EstimatedQueryPlanAction extends QueryTaskbarAction {
this.label = nls.localize('estimatedQueryPlan', "Explain"); this.label = nls.localize('estimatedQueryPlan', "Explain");
} }
public run(): Promise<void> { public async run(): Promise<void> {
if (!this.editor.isSelectionEmpty()) { if (!this.editor.isSelectionEmpty()) {
if (this.isConnected(this.editor)) { if (this.isConnected(this.editor)) {
// If we are already connected, run the query // If we are already connected, run the query
@@ -311,7 +313,7 @@ export class EstimatedQueryPlanAction extends QueryTaskbarAction {
this.connectEditor(this.editor, RunQueryOnConnectionMode.estimatedQueryPlan, this.editor.getSelection()); this.connectEditor(this.editor, RunQueryOnConnectionMode.estimatedQueryPlan, this.editor.getSelection());
} }
} }
return Promise.resolve(null); return;
} }
public runQuery(editor: QueryEditor) { public runQuery(editor: QueryEditor) {
@@ -339,7 +341,7 @@ export class ActualQueryPlanAction extends QueryTaskbarAction {
this.label = nls.localize('actualQueryPlan', "Actual"); this.label = nls.localize('actualQueryPlan', "Actual");
} }
public run(): Promise<void> { public async run(): Promise<void> {
if (!this.editor.isSelectionEmpty()) { if (!this.editor.isSelectionEmpty()) {
if (this.isConnected(this.editor)) { if (this.isConnected(this.editor)) {
// If we are already connected, run the query // If we are already connected, run the query
@@ -350,7 +352,7 @@ export class ActualQueryPlanAction extends QueryTaskbarAction {
this.connectEditor(this.editor, RunQueryOnConnectionMode.actualQueryPlan, this.editor.getSelection()); this.connectEditor(this.editor, RunQueryOnConnectionMode.actualQueryPlan, this.editor.getSelection());
} }
} }
return Promise.resolve(null); return;
} }
public runQuery(editor: QueryEditor) { public runQuery(editor: QueryEditor) {
@@ -386,11 +388,11 @@ export class DisconnectDatabaseAction extends QueryTaskbarAction {
this.label = nls.localize('disconnectDatabaseLabel', "Disconnect"); this.label = nls.localize('disconnectDatabaseLabel', "Disconnect");
} }
public run(): Promise<void> { public async run(): Promise<void> {
// Call disconnectEditor regardless of the connection state and let the ConnectionManagementService // Call disconnectEditor regardless of the connection state and let the ConnectionManagementService
// determine if we need to disconnect, cancel an in-progress conneciton, or do nothing // determine if we need to disconnect, cancel an in-progress conneciton, or do nothing
this.connectionManagementService.disconnectEditor(this.editor.input); this.connectionManagementService.disconnectEditor(this.editor.input);
return Promise.resolve(null); return;
} }
} }
@@ -424,9 +426,9 @@ export class ConnectDatabaseAction extends QueryTaskbarAction {
this.label = label; this.label = label;
} }
public run(): Promise<void> { public async run(): Promise<void> {
this.connectEditor(this.editor); this.connectEditor(this.editor);
return Promise.resolve(null); return;
} }
} }
@@ -471,7 +473,8 @@ export class ToggleConnectDatabaseAction extends QueryTaskbarAction {
} }
} }
public run(): Promise<void> {
public async run(): Promise<void> {
if (!this.editor.input.isSharedSession) { if (!this.editor.input.isSharedSession) {
if (this.connected) { if (this.connected) {
// Call disconnectEditor regardless of the connection state and let the ConnectionManagementService // Call disconnectEditor regardless of the connection state and let the ConnectionManagementService
@@ -481,7 +484,7 @@ export class ToggleConnectDatabaseAction extends QueryTaskbarAction {
this.connectEditor(this.editor); this.connectEditor(this.editor);
} }
} }
return Promise.resolve(null); return;
} }
} }
@@ -502,8 +505,8 @@ export class ListDatabasesAction extends QueryTaskbarAction {
this.class = ListDatabasesAction.EnabledClass; this.class = ListDatabasesAction.EnabledClass;
} }
public run(): Promise<void> { public async run(): Promise<void> {
return Promise.resolve(null); return;
} }
} }
@@ -547,18 +550,21 @@ export class ToggleSqlCmdModeAction extends QueryTaskbarAction {
} }
public run(): Promise<void> { public async run(): Promise<void> {
const toSqlCmdState = !this.isSqlCmdMode; // input.state change triggers event that changes this.isSqlCmdMode, so store it before using const toSqlCmdState = !this.isSqlCmdMode; // input.state change triggers event that changes this.isSqlCmdMode, so store it before using
this.editor.input.state.isSqlCmdMode = toSqlCmdState; this.editor.input.state.isSqlCmdMode = toSqlCmdState;
// set query options // set query options
let queryoptions: QueryExecutionOptions = { options: new Map<string, any>() }; let queryoptions: QueryExecutionOptions = { options: new Map<string, any>() };
queryoptions.options['isSqlCmdMode'] = toSqlCmdState; queryoptions.options['isSqlCmdMode'] = toSqlCmdState;
if (!this.editor.input) {
console.error('editor input was null');
return;
}
this.queryManagementService.setQueryExecutionOptions(this.editor.input.uri, queryoptions); this.queryManagementService.setQueryExecutionOptions(this.editor.input.uri, queryoptions);
// set intellisense options // set intellisense options
toSqlCmdState ? this.connectionManagementService.doChangeLanguageFlavor(this.editor.input.uri, 'sqlcmd', 'MSSQL') : this.connectionManagementService.doChangeLanguageFlavor(this.editor.input.uri, 'sql', 'MSSQL'); toSqlCmdState ? this.connectionManagementService.doChangeLanguageFlavor(this.editor.input.uri, 'sqlcmd', 'MSSQL') : this.connectionManagementService.doChangeLanguageFlavor(this.editor.input.uri, 'sql', 'MSSQL');
return Promise.resolve(null);
} }
} }
@@ -677,6 +683,11 @@ export class ListDatabasesActionItem extends Disposable implements IActionViewIt
// PRIVATE HELPERS ///////////////////////////////////////////////////// // PRIVATE HELPERS /////////////////////////////////////////////////////
private databaseSelected(dbName: string): void { private databaseSelected(dbName: string): void {
if (!this._editor.input) {
console.error('editor input was null');
return;
}
let uri = this._editor.input.uri; let uri = this._editor.input.uri;
if (!uri) { if (!uri) {
return; return;
@@ -707,7 +718,12 @@ export class ListDatabasesActionItem extends Disposable implements IActionViewIt
}); });
} }
private getCurrentDatabaseName() { private getCurrentDatabaseName(): string | undefined {
if (!this._editor.input) {
console.error('editor input was null');
return undefined;
}
let uri = this._editor.input.uri; let uri = this._editor.input.uri;
if (uri) { if (uri) {
let profile = this.connectionManagementService.getConnectionProfile(uri); let profile = this.connectionManagementService.getConnectionProfile(uri);
@@ -731,6 +747,11 @@ export class ListDatabasesActionItem extends Disposable implements IActionViewIt
return; return;
} }
if (!this._editor.input) {
console.error('editor input was null');
return;
}
let uri = this._editor.input.uri; let uri = this._editor.input.uri;
if (uri !== connParams.connectionUri) { if (uri !== connParams.connectionUri) {
return; return;
@@ -740,6 +761,11 @@ export class ListDatabasesActionItem extends Disposable implements IActionViewIt
} }
private onDropdownFocus(): void { private onDropdownFocus(): void {
if (!this._editor.input) {
console.error('editor input was null');
return;
}
let uri = this._editor.input.uri; let uri = this._editor.input.uri;
if (!uri) { if (!uri) {
return; return;
@@ -759,6 +785,10 @@ export class ListDatabasesActionItem extends Disposable implements IActionViewIt
if (this._isInAccessibilityMode) { if (this._isInAccessibilityMode) {
this._databaseSelectBox.enable(); this._databaseSelectBox.enable();
if (!this._editor.input) {
console.error('editor input was null');
return;
}
let uri = this._editor.input.uri; let uri = this._editor.input.uri;
if (!uri) { if (!uri) {
return; return;

View File

@@ -120,7 +120,7 @@ export class QueryEditor extends BaseEditor {
} }
// PUBLIC METHODS //////////////////////////////////////////////////////////// // PUBLIC METHODS ////////////////////////////////////////////////////////////
public get input(): QueryInput { public get input(): QueryInput | null {
return this._input as QueryInput; return this._input as QueryInput;
} }