Skip to content

Commit 26ae591

Browse files
authored
chore(queued-request-controller): Remove countChanged event (#3985)
## Explanation The event `QueuedRequestController:countChanged` and the method `length` have been removed. Both the event and method were deprecated as part of #3919, which also provided an alternative by adding the queued request count to the controller state. ## References Related to #3919 ## Changelog ### `@metamask/queued-request-controller` #### Removed - **BREAKING**: Remove the `QueuedRequestController:countChanged` event - The number of queued requests is now tracked in controller state, as the `queuedRequestCount` property. Use the `QueuedRequestController:stateChange` event to be notified of count changes instead. - **BREAKING**: Remove the `length` method - The number of queued requests is now tracked in controller state, as the `queuedRequestCount` property. ## Checklist - [x] I've updated the test suite for new or updated code as appropriate - [x] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate - [x] I've highlighted breaking changes using the "BREAKING" category above as appropriate
1 parent 67af7d4 commit 26ae591

File tree

3 files changed

+2
-125
lines changed

3 files changed

+2
-125
lines changed

packages/queued-request-controller/src/QueuedRequestController.test.ts

+1-94
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ describe('QueuedRequestController', () => {
139139
await expect(() =>
140140
controller.enqueueRequest(requestWithError),
141141
).rejects.toThrow(new Error('Request failed'));
142-
expect(controller.length()).toBe(0);
142+
expect(controller.state.queuedRequestCount).toBe(0);
143143
});
144144

145145
it('correctly updates the request queue count upon failure', async () => {
@@ -191,97 +191,4 @@ describe('QueuedRequestController', () => {
191191
});
192192
});
193193
});
194-
195-
describe('countChanged event', () => {
196-
it('gets emitted when the queue length changes', async () => {
197-
const options: QueuedRequestControllerOptions = {
198-
messenger: buildQueuedRequestControllerMessenger(),
199-
};
200-
201-
const controller = new QueuedRequestController(options);
202-
203-
// Mock the event listener
204-
const eventListener = jest.fn();
205-
206-
// Subscribe to the countChanged event
207-
options.messenger.subscribe(
208-
'QueuedRequestController:countChanged',
209-
eventListener,
210-
);
211-
212-
// Enqueue a request, which should increase the count
213-
controller.enqueueRequest(
214-
async () => new Promise((resolve) => setTimeout(resolve, 10)),
215-
);
216-
expect(eventListener).toHaveBeenNthCalledWith(1, 1);
217-
218-
// Enqueue another request, which should increase the count
219-
controller.enqueueRequest(
220-
async () => new Promise((resolve) => setTimeout(resolve, 10)),
221-
);
222-
expect(eventListener).toHaveBeenNthCalledWith(2, 2);
223-
224-
// Resolve the first request, which should decrease the count
225-
await new Promise((resolve) => setTimeout(resolve, 10));
226-
expect(eventListener).toHaveBeenNthCalledWith(3, 1);
227-
228-
// Resolve the second request, which should decrease the count
229-
await new Promise((resolve) => setTimeout(resolve, 10));
230-
expect(eventListener).toHaveBeenNthCalledWith(4, 0);
231-
});
232-
});
233-
234-
describe('length', () => {
235-
it('returns the correct queue length', async () => {
236-
const options: QueuedRequestControllerOptions = {
237-
messenger: buildQueuedRequestControllerMessenger(),
238-
};
239-
240-
const controller = new QueuedRequestController(options);
241-
242-
// Initially, the queue length should be 0
243-
expect(controller.length()).toBe(0);
244-
245-
const promise = controller.enqueueRequest(async () => {
246-
expect(controller.length()).toBe(1);
247-
return Promise.resolve();
248-
});
249-
expect(controller.length()).toBe(1);
250-
await promise;
251-
expect(controller.length()).toBe(0);
252-
});
253-
254-
it('correctly reflects increasing queue length as requests are enqueued', async () => {
255-
const options: QueuedRequestControllerOptions = {
256-
messenger: buildQueuedRequestControllerMessenger(),
257-
};
258-
259-
const controller = new QueuedRequestController(options);
260-
261-
expect(controller.length()).toBe(0);
262-
263-
controller.enqueueRequest(async () => {
264-
expect(controller.length()).toBe(1);
265-
return Promise.resolve();
266-
});
267-
expect(controller.length()).toBe(1);
268-
269-
const req2 = controller.enqueueRequest(async () => {
270-
expect(controller.length()).toBe(2);
271-
return Promise.resolve();
272-
});
273-
expect(controller.length()).toBe(2);
274-
275-
const req3 = controller.enqueueRequest(async () => {
276-
// if we dont wait for the outter enqueueRequest to be complete, the count might not be updated when by the time this nextTick occurs.
277-
await req2;
278-
expect(controller.length()).toBe(1);
279-
return Promise.resolve();
280-
});
281-
282-
expect(controller.length()).toBe(3);
283-
await req3;
284-
expect(controller.length()).toBe(0);
285-
});
286-
});
287194
});

packages/queued-request-controller/src/QueuedRequestController.ts

+1-30
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export type QueuedRequestControllerEnqueueRequestAction = {
2727
};
2828

2929
export const QueuedRequestControllerEventTypes = {
30-
countChanged: `${controllerName}:countChanged` as const,
3130
stateChange: `${controllerName}:stateChange` as const,
3231
};
3332

@@ -37,19 +36,8 @@ export type QueuedRequestControllerStateChangeEvent =
3736
QueuedRequestControllerState
3837
>;
3938

40-
/**
41-
* This event is fired when the number of queued requests changes.
42-
*
43-
* @deprecated Use the `QueuedRequestController:stateChange` event instead
44-
*/
45-
export type QueuedRequestControllerCountChangedEvent = {
46-
type: typeof QueuedRequestControllerEventTypes.countChanged;
47-
payload: [number];
48-
};
49-
5039
export type QueuedRequestControllerEvents =
51-
| QueuedRequestControllerCountChangedEvent
52-
| QueuedRequestControllerStateChangeEvent;
40+
QueuedRequestControllerStateChangeEvent;
5341

5442
export type QueuedRequestControllerActions =
5543
| QueuedRequestControllerGetStateAction
@@ -113,27 +101,10 @@ export class QueuedRequestController extends BaseController<
113101
);
114102
}
115103

116-
/**
117-
* Gets the current count of enqueued requests in the request queue. This count represents the number of
118-
* pending requests that are waiting to be processed sequentially.
119-
*
120-
* @returns The current count of enqueued requests. This count reflects the number of pending
121-
* requests in the queue, which are yet to be processed. It allows you to monitor the queue's workload
122-
* and assess the volume of requests awaiting execution.
123-
* @deprecated This method is deprecated; use `state.queuedRequestCount` directly instead.
124-
*/
125-
length() {
126-
return this.state.queuedRequestCount;
127-
}
128-
129104
#updateCount(change: -1 | 1) {
130105
this.update((state) => {
131106
state.queuedRequestCount += change;
132107
});
133-
this.messagingSystem.publish(
134-
'QueuedRequestController:countChanged',
135-
this.state.queuedRequestCount,
136-
);
137108
}
138109

139110
/**

packages/queued-request-controller/src/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
export type {
22
QueuedRequestControllerState,
3-
QueuedRequestControllerCountChangedEvent,
43
QueuedRequestControllerEnqueueRequestAction,
54
QueuedRequestControllerGetStateAction,
65
QueuedRequestControllerStateChangeEvent,

0 commit comments

Comments
 (0)