From f3240e22c6de69b408a83b59e85f40fb913acfab Mon Sep 17 00:00:00 2001 From: Veetaha Date: Sun, 9 Feb 2020 14:18:05 +0200 Subject: vscode: move throtting of download progress to call site --- editors/code/src/installation/download_file.ts | 8 +++---- editors/code/src/installation/language_server.ts | 27 ++++++++++++++---------- 2 files changed, 19 insertions(+), 16 deletions(-) (limited to 'editors/code/src') diff --git a/editors/code/src/installation/download_file.ts b/editors/code/src/installation/download_file.ts index ec16dcd66..53bf46d78 100644 --- a/editors/code/src/installation/download_file.ts +++ b/editors/code/src/installation/download_file.ts @@ -1,20 +1,18 @@ import fetch from "node-fetch"; -import { throttle } from "throttle-debounce"; import * as fs from "fs"; import { strict as assert } from "assert"; /** * Downloads file from `url` and stores it at `destFilePath`. - * `onProgress` callback is periodically called to track the progress of downloading, - * it gets the already read and total amount of bytes to read as its parameters. + * `onProgress` callback is called on recieveing each chunk of bytes + * to track the progress of downloading, it gets the already read and total + * amount of bytes to read as its parameters. */ export async function downloadFile( url: string, destFilePath: fs.PathLike, onProgress: (readBytes: number, totalBytes: number) => void ): Promise { - onProgress = throttle(200, /* noTrailing: */ true, onProgress); - const response = await fetch(url); const totalBytes = Number(response.headers.get('content-length')); diff --git a/editors/code/src/installation/language_server.ts b/editors/code/src/installation/language_server.ts index a169eae47..c1f37f978 100644 --- a/editors/code/src/installation/language_server.ts +++ b/editors/code/src/installation/language_server.ts @@ -1,8 +1,9 @@ -import { spawnSync } from "child_process"; import * as vscode from "vscode"; import * as path from "path"; import { strict as assert } from "assert"; import { promises as fs } from "fs"; +import { spawnSync } from "child_process"; +import { throttle } from "throttle-debounce"; import { BinarySource } from "./interfaces"; import { fetchLatestArtifactMetadata } from "./fetch_latest_artifact_metadata"; @@ -28,19 +29,23 @@ export async function downloadLatestLanguageServer( { location: vscode.ProgressLocation.Notification, cancellable: false, // FIXME: add support for canceling download? - title: `Downloading language server ${releaseName}` + title: `Downloading language server (${releaseName})` }, async (progress, _cancellationToken) => { let lastPrecentage = 0; - await downloadFile(downloadUrl, installationPath, (readBytes, totalBytes) => { - const newPercentage = (readBytes / totalBytes) * 100; - progress.report({ - message: newPercentage.toFixed(0) + "%", - increment: newPercentage - lastPrecentage - }); - - lastPrecentage = newPercentage; - }); + await downloadFile(downloadUrl, installationPath, throttle( + 200, + /* noTrailing: */ true, + (readBytes, totalBytes) => { + const newPercentage = (readBytes / totalBytes) * 100; + progress.report({ + message: newPercentage.toFixed(0) + "%", + increment: newPercentage - lastPrecentage + }); + + lastPrecentage = newPercentage; + }) + ); } ); -- cgit v1.2.3