export class ProgressTimeout {
public aliveTimer: any;
public isDone = false;
public timeout = 30000;
public timeoutHandler: (() => void) | null = null;
progress() {
// Some browsers fire another progress event when the upload is
// cancelled, so we have to ignore progress after the timer was
// told to stop.
if (this.isDone || !this.timeoutHandler) return;
if (this.timeout > 0) {
clearTimeout(this.aliveTimer);
this.aliveTimer = setTimeout(this.timeoutHandler, this.timeout);
}
}
done() {
if (!this.isDone) {
clearTimeout(this.aliveTimer);
this.aliveTimer = null;
this.isDone = true;
}
}
}