@@ -430,9 +430,11 @@ export class MediaRequestManager extends MediaPlayerController implements MediaR
430430 }
431431
432432 [ 'media-audio-track-change-request' ] ( event : RE . MediaAudioTrackChangeRequestEvent ) {
433- if ( this . _media . audioTracks . readonly ) {
433+ const { logger, audioTracks } = this . _media ;
434+
435+ if ( audioTracks . readonly ) {
434436 if ( __DEV__ ) {
435- this . _media . logger
437+ logger
436438 ?. warnGroup ( `[vidstack] attempted to change audio track but it is currently read-only` )
437439 . labelledLog ( 'Request Event' , event )
438440 . dispatch ( ) ;
@@ -442,16 +444,16 @@ export class MediaRequestManager extends MediaPlayerController implements MediaR
442444 }
443445
444446 const index = event . detail ,
445- track = this . _media . audioTracks [ index ] ;
447+ track = audioTracks [ index ] ;
446448
447449 if ( track ) {
448450 const key = event . type as 'media-audio-track-change-request' ;
449451 this . _request . _queue . _enqueue ( key , event ) ;
450452 track . selected = true ;
451453 } else if ( __DEV__ ) {
452- this . _media . logger
454+ logger
453455 ?. warnGroup ( '[vidstack] failed audio track change request (invalid index)' )
454- . labelledLog ( 'Audio Tracks' , this . _media . audioTracks . toArray ( ) )
456+ . labelledLog ( 'Audio Tracks' , audioTracks . toArray ( ) )
455457 . labelledLog ( 'Index' , index )
456458 . labelledLog ( 'Request Event' , event )
457459 . dispatch ( ) ;
@@ -618,9 +620,11 @@ export class MediaRequestManager extends MediaPlayerController implements MediaR
618620 }
619621
620622 [ 'media-quality-change-request' ] ( event : RE . MediaQualityChangeRequestEvent ) {
621- if ( this . _media . qualities . readonly ) {
623+ const { qualities, storage, logger } = this . _media ;
624+
625+ if ( qualities . readonly ) {
622626 if ( __DEV__ ) {
623- this . _media . logger
627+ logger
624628 ?. warnGroup ( `[vidstack] attempted to change video quality but it is currently read-only` )
625629 . labelledLog ( 'Request Event' , event )
626630 . dispatch ( ) ;
@@ -632,16 +636,26 @@ export class MediaRequestManager extends MediaPlayerController implements MediaR
632636 this . _request . _queue . _enqueue ( 'media-quality-change-request' , event ) ;
633637
634638 const index = event . detail ;
639+
635640 if ( index < 0 ) {
636- this . _media . qualities . autoSelect ( event ) ;
641+ qualities . autoSelect ( event ) ;
642+ if ( event . isOriginTrusted ) storage ?. setVideoQuality ?.( null ) ;
637643 } else {
638- const quality = this . _media . qualities [ index ] ;
644+ const quality = qualities [ index ] ;
639645 if ( quality ) {
640646 quality . selected = true ;
647+ if ( event . isOriginTrusted ) {
648+ storage ?. setVideoQuality ?.( {
649+ id : quality . id ,
650+ width : quality . width ,
651+ height : quality . height ,
652+ bitrate : quality . bitrate ,
653+ } ) ;
654+ }
641655 } else if ( __DEV__ ) {
642- this . _media . logger
656+ logger
643657 ?. warnGroup ( '[vidstack] failed quality change request (invalid index)' )
644- . labelledLog ( 'Qualities' , this . _media . qualities . toArray ( ) )
658+ . labelledLog ( 'Qualities' , qualities . toArray ( ) )
645659 . labelledLog ( 'Index' , index )
646660 . labelledLog ( 'Request Event' , event )
647661 . dispatch ( ) ;
0 commit comments