From ea5ab993993280b7c9fc03c25be658f11369df4d Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Thu, 29 Aug 2024 17:00:12 +0100 Subject: [Video] Make compress/upload cancelable (#4996) * add abort controller to video upload system * rm log * rm log 2 --- src/lib/async/cancelable.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/lib/async/cancelable.ts (limited to 'src/lib/async') diff --git a/src/lib/async/cancelable.ts b/src/lib/async/cancelable.ts new file mode 100644 index 000000000..50fbcc63b --- /dev/null +++ b/src/lib/async/cancelable.ts @@ -0,0 +1,20 @@ +export function cancelable( + f: (args: A) => Promise, + signal: AbortSignal, +) { + return (args: A) => { + return new Promise((resolve, reject) => { + signal.addEventListener('abort', () => { + reject(new AbortError()) + }) + f(args).then(resolve, reject) + }) + } +} + +export class AbortError extends Error { + constructor() { + super('Aborted') + this.name = 'AbortError' + } +} -- cgit 1.4.1