Skip to content

Commit 9da44ba

Browse files
committed
Clean up event handler
1 parent 94858a1 commit 9da44ba

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/core/task/Task.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
268268

269269
// Message Queue Service
270270
public readonly messageQueueService: MessageQueueService
271+
private messageQueueStateChangedHandler: (() => void) | undefined
271272

272273
// Streaming
273274
isWaitingForFirstChunk = false
@@ -370,7 +371,8 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
370371
this.assistantMessageParser = new AssistantMessageParser()
371372

372373
this.messageQueueService = new MessageQueueService()
373-
this.messageQueueService.on("stateChanged", () => this.providerRef.deref()?.postStateToWebview())
374+
this.messageQueueStateChangedHandler = () => this.providerRef.deref()?.postStateToWebview()
375+
this.messageQueueService.on("stateChanged", this.messageQueueStateChangedHandler)
374376

375377
// Only set up diff strategy if diff is enabled.
376378
if (this.diffEnabled) {
@@ -1448,8 +1450,13 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
14481450
public dispose(): void {
14491451
console.log(`[Task#dispose] disposing task ${this.taskId}.${this.instanceId}`)
14501452

1451-
// Dispose message queue.
1453+
// Dispose message queue and remove event listeners.
14521454
try {
1455+
if (this.messageQueueStateChangedHandler) {
1456+
this.messageQueueService.removeListener("stateChanged", this.messageQueueStateChangedHandler)
1457+
this.messageQueueStateChangedHandler = undefined
1458+
}
1459+
14531460
this.messageQueueService.dispose()
14541461
} catch (error) {
14551462
console.error("Error disposing message queue:", error)

0 commit comments

Comments
 (0)