26
common/resources/client/uploads/uploader/progress-timeout.ts
Executable file
26
common/resources/client/uploads/uploader/progress-timeout.ts
Executable file
@@ -0,0 +1,26 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user