File tree Expand file tree Collapse file tree 1 file changed +14
-2
lines changed Expand file tree Collapse file tree 1 file changed +14
-2
lines changed Original file line number Diff line number Diff 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 ) {
You can’t perform that action at this time.
0 commit comments