Skip to content

Commit

Permalink
Avoids any usage for setTimeout/setInterval
Browse files Browse the repository at this point in the history
  • Loading branch information
eamodio committed Jan 19, 2022
1 parent b1fe47d commit df7dd9f
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/commands/closeUnchangedFiles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ export class CloseUnchangedFilesCommand extends Command {

private waitForEditorChange(timeout: number = 500): Promise<TextEditor | undefined> {
return new Promise<TextEditor | undefined>(resolve => {
let timer: any | undefined;
let timer: ReturnType<typeof setTimeout> | undefined;

this._onEditorChangedFn = (editor: TextEditor | undefined) => {
if (timer != null) {
Expand Down
12 changes: 9 additions & 3 deletions src/partners.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,15 @@ export async function installExtension<T>(
vsix?: Uri,
): Promise<Extension<T> | undefined> {
try {
let timer: any = 0;
let timer: ReturnType<typeof setTimeout> | undefined = undefined;
const extension = new Promise<Extension<any> | undefined>(resolve => {
const disposable = extensions.onDidChange(() => {
const extension = extensions.getExtension(extensionId);
if (extension != null) {
clearTimeout(timer);
if (timer != null) {
clearTimeout(timer);
timer = undefined;
}
disposable.dispose();

resolve(extension);
Expand All @@ -33,7 +36,10 @@ export async function installExtension<T>(

await commands.executeCommand(BuiltInCommands.InstallExtension, vsix ?? extensionId);
// Wait for extension activation until timeout expires
timer = setTimeout(() => tokenSource.cancel(), timeout);
timer = setTimeout(() => {
timer = undefined;
tokenSource.cancel();
}, timeout);

return extension;
} catch {
Expand Down
7 changes: 5 additions & 2 deletions src/statusbar/statusBarController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { LinesChangeEvent } from '../trackers/gitLineTracker';
export class StatusBarController implements Disposable {
private _pullRequestCancellation: CancellationTokenSource | undefined;
private _tooltipCancellation: CancellationTokenSource | undefined;
private _tooltipDelayTimer: any | undefined;
private _tooltipDelayTimer: ReturnType<typeof setTimeout> | undefined;

private readonly _disposable: Disposable;
private _statusBarBlame: StatusBarItem | undefined;
Expand Down Expand Up @@ -305,10 +305,13 @@ export class StatusBarController implements Disposable {

this._statusBarBlame.tooltip = tooltip;

clearTimeout(this._tooltipDelayTimer);
if (this._tooltipDelayTimer != null) {
clearTimeout(this._tooltipDelayTimer);
}
this._tooltipCancellation?.cancel();

this._tooltipDelayTimer = setTimeout(() => {
this._tooltipDelayTimer = undefined;
this._tooltipCancellation = new CancellationTokenSource();

void this.updateCommitTooltip(
Expand Down
16 changes: 8 additions & 8 deletions src/system/function.ts
Original file line number Diff line number Diff line change
Expand Up @@ -152,26 +152,26 @@ export function propOf<T, K extends Extract<keyof T, string>>(o: T, key: K) {
}

export function interval(fn: (...args: any[]) => void, ms: number): Disposable {
let timer: any | undefined;
let timer: ReturnType<typeof setInterval> | undefined;
const disposable = {
dispose: () => {
if (timer !== undefined) {
if (timer != null) {
clearInterval(timer);
timer = undefined;
}
},
};
timer = globalThis.setInterval(fn, ms);
timer = setInterval(fn, ms);

return disposable;
}

export function progress<T>(promise: Promise<T>, intervalMs: number, onProgress: () => boolean): Promise<T> {
return new Promise((resolve, reject) => {
let timer: any | undefined;
timer = globalThis.setInterval(() => {
let timer: ReturnType<typeof setInterval> | undefined;
timer = setInterval(() => {
if (onProgress()) {
if (timer !== undefined) {
if (timer != null) {
clearInterval(timer);
timer = undefined;
}
Expand All @@ -180,15 +180,15 @@ export function progress<T>(promise: Promise<T>, intervalMs: number, onProgress:

promise.then(
() => {
if (timer !== undefined) {
if (timer != null) {
clearInterval(timer);
timer = undefined;
}

resolve(promise);
},
ex => {
if (timer !== undefined) {
if (timer != null) {
clearInterval(timer);
timer = undefined;
}
Expand Down
8 changes: 4 additions & 4 deletions src/system/promise.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ export function cancellable<T>(

return new Promise((resolve, reject) => {
let fulfilled = false;
let timer: any | undefined;
let timer: ReturnType<typeof setTimeout> | undefined;
if (typeof timeoutOrToken === 'number') {
timer = globalThis.setTimeout(() => {
timer = setTimeout(() => {
if (typeof options.onDidCancel === 'function') {
options.onDidCancel(resolve, reject);
} else {
Expand All @@ -52,14 +52,14 @@ export function cancellable<T>(
promise.then(
() => {
fulfilled = true;
if (timer !== undefined) {
if (timer != null) {
clearTimeout(timer);
}
resolve(promise);
},
ex => {
fulfilled = true;
if (timer !== undefined) {
if (timer != null) {
clearTimeout(timer);
}
reject(ex);
Expand Down
2 changes: 1 addition & 1 deletion src/trackers/documentTracker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ export class DocumentTracker<T> implements Disposable {
this.onActiveTextEditorChanged(window.activeTextEditor);
}

private _timer: any | undefined;
private _timer: ReturnType<typeof setTimeout> | undefined;
private onActiveTextEditorChanged(editor: TextEditor | undefined) {
if (editor != null && !isTextEditor(editor)) return;

Expand Down

0 comments on commit df7dd9f

Please sign in to comment.