Skip to content

Commit 589d5de

Browse files
committed
Fix searching tracks not visible on the screen
1 parent 0112e13 commit 589d5de

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/core/queue/TrackQueue.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,14 @@ export class TrackQueue {
153153
await BeatSaber.Storage.putTrack(track)
154154
}
155155

156+
// delete the subject if no more requests is queued AND there is no observers
157+
if (
158+
!this.queue.some((request) => request.slug == track.slug) &&
159+
!this.observables.has(track.slug)
160+
) {
161+
this.subjects.delete(track.slug)
162+
}
163+
156164
this.queueNext()
157165
}
158166

@@ -172,7 +180,8 @@ export class TrackQueue {
172180
return this.getObservable(track.slug)
173181
}
174182

175-
const subject = new BehaviorSubject(track)
183+
const subject =
184+
this.getSubject(track.slug) || new BehaviorSubject(track)
176185
const observable = subject.pipe(
177186
finalize(() => {
178187
this.finalize(track.slug)
@@ -277,8 +286,11 @@ export class TrackQueue {
277286

278287
finalize(slug: string) {
279288
this.log("[TrackQueue] Finalizing", slug)
280-
this.subjects.delete(slug)
281289
this.observables.delete(slug)
290+
// delete the subject if no more requests is queued (because there is no more observers)
291+
if (!this.queue.some((request) => request.slug == slug)) {
292+
this.subjects.delete(slug)
293+
}
282294
}
283295

284296
cancelRequests(slug: string) {

0 commit comments

Comments
 (0)