From d4d72e8b9b3cc8b9ce72444a11e16cfa606a7f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Fri, 31 Jan 2020 20:55:10 +0200 Subject: Improve responsiveness of the cargo check status label --- editors/code/src/status_display.ts | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'editors/code') diff --git a/editors/code/src/status_display.ts b/editors/code/src/status_display.ts index c75fddf9d..7345bc3f5 100644 --- a/editors/code/src/status_display.ts +++ b/editors/code/src/status_display.ts @@ -17,7 +17,7 @@ export function activateStatusDisplay(ctx: Ctx) { class StatusDisplay implements vscode.Disposable { packageName?: string; - private i = 0; + private i: number = 0; private statusBarItem: vscode.StatusBarItem; private command: string; private timer?: NodeJS.Timeout; @@ -37,11 +37,8 @@ class StatusDisplay implements vscode.Disposable { this.timer = this.timer || setInterval(() => { - if (this.packageName) { - this.statusBarItem!.text = `${this.frame()} cargo ${this.command} [${this.packageName}]`; - } else { - this.statusBarItem!.text = `${this.frame()} cargo ${this.command}`; - } + this.tick(); + this.refreshLabel(); }, 300); this.statusBarItem.show(); @@ -65,6 +62,14 @@ class StatusDisplay implements vscode.Disposable { this.statusBarItem.dispose(); } + refreshLabel() { + if (this.packageName) { + this.statusBarItem!.text = `${spinnerFrames[this.i]} cargo ${this.command} [${this.packageName}]`; + } else { + this.statusBarItem!.text = `${spinnerFrames[this.i]} cargo ${this.command}`; + } + } + handleProgressNotification(params: WorkDoneProgressBegin | WorkDoneProgressReport | WorkDoneProgressEnd) { switch (params.kind) { case 'begin': @@ -74,6 +79,7 @@ class StatusDisplay implements vscode.Disposable { case 'report': if (params.message) { this.packageName = params.message; + this.refreshLabel(); } break; @@ -83,7 +89,7 @@ class StatusDisplay implements vscode.Disposable { } } - private frame() { - return spinnerFrames[(this.i = ++this.i % spinnerFrames.length)]; + private tick() { + this.i = (this.i + 1) % spinnerFrames.length; } } -- cgit v1.2.3