Skip to content

Commit ee5052d

Browse files
committed
fix: fix hook promise chaining
1 parent d605ba5 commit ee5052d

File tree

1 file changed

+7
-14
lines changed

1 file changed

+7
-14
lines changed

packages/server/src/Hocuspocus.ts

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -291,25 +291,18 @@ export class Hocuspocus {
291291
* Runs the given callback after each hook
292292
* @private
293293
*/
294-
private async hooks(name: string, hookPayload: any, callback: Function | null = null): Promise<any> {
294+
private hooks(name: string, hookPayload: any, callback: Function | null = null): Promise<any> {
295295
const { extensions } = this.configuration
296296

297+
let chain = Promise.resolve()
298+
297299
for (let i = 0; i < extensions.length; i += 1) {
298-
// eslint-disable-next-line no-await-in-loop
299-
await this.hook(name, extensions[i], hookPayload, callback)
300+
// @ts-ignore
301+
chain = chain.then(() => (extensions[i][name] ? extensions[i][name](hookPayload) : null))
302+
if (callback) chain = chain.then((...args: any[]) => callback(...args))
300303
}
301-
}
302-
303-
/**
304-
* Run the given hook on the given extension.
305-
* @private
306-
*/
307-
private hook(name: string, extension: Extension, hookPayload: any, callback: Function | null = null): Promise<any> {
308-
// @ts-ignore
309-
const promise = extension[name] ? extension[name](hookPayload) : new Promise(r => r())
310-
if (callback) promise.then((...args: any[]) => callback(...args))
311304

312-
return promise
305+
return chain
313306
}
314307

315308
/**

0 commit comments

Comments
 (0)