From 9be8e4d2c733d859ec499097078a2afd43cda285 Mon Sep 17 00:00:00 2001 From: Marcelo Shima Date: Mon, 25 Sep 2023 10:05:11 -0300 Subject: [PATCH] own beforeQueue --- src/actions/lifecycle.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/actions/lifecycle.ts b/src/actions/lifecycle.ts index 50b510f2..f4b829a3 100644 --- a/src/actions/lifecycle.ts +++ b/src/actions/lifecycle.ts @@ -371,9 +371,25 @@ export abstract class TasksMixin { */ async queueTasks(this: BaseGeneratorImpl): Promise { const thisAny = this as any; + const thisPrototype = Object.getPrototypeOf(thisAny); + + let beforeQueueCallback: (() => Promise) | undefined; + if (this.features.taskPrefix) { + // We want beforeQueue if beforeQueue belongs to the object or to the imediatelly extended class. + beforeQueueCallback = + Object.hasOwn(thisAny, 'beforeQueue') || Object.hasOwn(thisPrototype, 'beforeQueue') + ? thisAny.beforeQueue + : undefined; + } + + if (!beforeQueueCallback) { + // Fallback to _beforeQueue, + beforeQueueCallback = + Object.hasOwn(thisAny, '_beforeQueue') || Object.hasOwn(thisPrototype, '_beforeQueue') + ? thisAny._beforeQueue + : undefined; + } - const beforeQueueCallback: () => Promise = - (this.features.taskPrefix && thisAny.beforeQueue) ?? thisAny._beforeQueue; if (beforeQueueCallback) { await beforeQueueCallback.call(this); }