From 0e24fc09b58fa4a1b6d381d4c3dbcc8f81463b05 Mon Sep 17 00:00:00 2001 From: Aditya Bist Date: Thu, 13 May 2021 12:01:11 -0700 Subject: [PATCH] Fix cloud shell (#15452) * fix cloud shell * better logic for dimensions * fix dimension type * change terminate to close --- .../src/azureResource/services/terminalService.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/extensions/azurecore/src/azureResource/services/terminalService.ts b/extensions/azurecore/src/azureResource/services/terminalService.ts index a8b370bd80..f0fec8af8a 100644 --- a/extensions/azurecore/src/azureResource/services/terminalService.ts +++ b/extensions/azurecore/src/azureResource/services/terminalService.ts @@ -103,7 +103,7 @@ export class AzureTerminalService implements IAzureTerminalService { } } - const shells = [new ShellType('PowerShell', 'pwsh'), new ShellType('Bash', 'bash'),]; + const shells = [new ShellType('PowerShell', 'pwsh'), new ShellType('Bash', 'bash')]; const idx = shells.findIndex(s => s.value === preferredShell); const prefShell = shells.splice(idx, 1); @@ -157,7 +157,7 @@ class AzureTerminal implements vscode.Pseudoterminal { } async open(initialDimensions: vscode.TerminalDimensions): Promise { - this.setDimensions(initialDimensions); + await this.setDimensions(initialDimensions); } close(): void { @@ -167,14 +167,19 @@ class AzureTerminal implements vscode.Pseudoterminal { this.socket.removeAllListeners('message'); this.socket.removeAllListeners('close'); - this.socket.terminate(); + this.socket.close(); + if (this.intervalTimer) { clearInterval(this.intervalTimer); } } + private areSameDimensions(oldDimensions: vscode.TerminalDimensions | undefined, newDimensions: vscode.TerminalDimensions): boolean { + return oldDimensions?.columns === newDimensions.columns && oldDimensions?.rows === newDimensions.rows; + } + async setDimensions(dimensions: vscode.TerminalDimensions): Promise { - if (!dimensions) { + if (!dimensions || this.areSameDimensions(this.terminalDimensions, dimensions)) { return; } this.terminalDimensions = dimensions;