From d2e8dcb6176d4d30671351abe3e290838a7c657b Mon Sep 17 00:00:00 2001 From: imanjra Date: Thu, 7 Mar 2024 10:20:06 -0500 Subject: [PATCH] notify new subscriber of pending operator invocation requests --- app/packages/operators/src/operators.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/packages/operators/src/operators.ts b/app/packages/operators/src/operators.ts index b378524cb3..78233c2753 100644 --- a/app/packages/operators/src/operators.ts +++ b/app/packages/operators/src/operators.ts @@ -751,16 +751,22 @@ export class InvocationRequestQueue { this._queue = []; } private _queue: QueueItem[]; - private _subscribers: ((queue: InvocationRequestQueue) => void)[] = []; + private _subscribers: InvocationRequestQueueSubscriberType[] = []; private _notifySubscribers() { for (const subscriber of this._subscribers) { - subscriber(this); + this._notifySubscriber(subscriber); } } - subscribe(subscriber: (queue: InvocationRequestQueue) => void) { + private _notifySubscriber(subscriber: InvocationRequestQueueSubscriberType) { + subscriber(this); + } + subscribe(subscriber: InvocationRequestQueueSubscriberType) { this._subscribers.push(subscriber); + if (this.hasPendingRequests()) { + this._notifySubscriber(subscriber); + } } - unsubscribe(subscriber: (queue: InvocationRequestQueue) => void) { + unsubscribe(subscriber: InvocationRequestQueueSubscriberType) { const index = this._subscribers.indexOf(subscriber); if (index !== -1) { this._subscribers.splice(index, 1); @@ -894,3 +900,7 @@ export function abortOperationsByURI(uri) { export function abortOperationsByExpression(expression) { getAbortableOperationQueue().abortByExpression(expression); } + +type InvocationRequestQueueSubscriberType = ( + queue: InvocationRequestQueue +) => void;