diff --git a/src/media/mediaQueue.ts b/src/media/mediaQueue.ts index ea224e2..d412e5b 100644 --- a/src/media/mediaQueue.ts +++ b/src/media/mediaQueue.ts @@ -38,11 +38,11 @@ export class MediaQueue { this.current = null; } - failCurrent(): void { - if (this.current) { - this.current = { ...this.current, status: "failed" }; - } + failCurrent(): MediaQueueItem | null { + if (!this.current) return null; + const failed = { ...this.current, status: "failed" as const }; this.current = null; + return failed; } clear(): void { diff --git a/tests/media/mediaQueue.test.ts b/tests/media/mediaQueue.test.ts index d63d5e7..bb21531 100644 --- a/tests/media/mediaQueue.test.ts +++ b/tests/media/mediaQueue.test.ts @@ -55,6 +55,15 @@ describe("MediaQueue", () => { expect(queue.snapshot().queue).toEqual([]); }); + it("returns the failed current item", () => { + const queue = new MediaQueue(() => "item-1", () => 1700000000000); + const item = queue.add(source(), "tester"); + queue.startNext(); + + expect(queue.failCurrent()).toEqual({ ...item, status: "failed" }); + expect(queue.snapshot()).toEqual({ current: null, queue: [] }); + }); + it("clears current and queued items", () => { const queue = new MediaQueue(() => "item-1", () => 1700000000000); queue.add(source(), "tester");