diff options
author | Sam Potts <sam@potts.es> | 2018-06-12 11:13:34 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-12 11:13:34 +1000 |
commit | 0b09b8ee6fc2212aa15d0d81999448eea62050ca (patch) | |
tree | 5d835cb0179850875450d72ba2c58edf27edbdff /src/js/plyr.js | |
parent | cd14c3086d2a34548bb51570c368b6e080ecb944 (diff) | |
parent | db95b3234fd38e5dd71d00876c925514960e63fc (diff) | |
download | plyr-0b09b8ee6fc2212aa15d0d81999448eea62050ca.tar.lz plyr-0b09b8ee6fc2212aa15d0d81999448eea62050ca.tar.xz plyr-0b09b8ee6fc2212aa15d0d81999448eea62050ca.zip |
Merge pull request #1027 from friday/quality
Minor code improvements for quality switching
Diffstat (limited to 'src/js/plyr.js')
-rw-r--r-- | src/js/plyr.js | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/src/js/plyr.js b/src/js/plyr.js index 0786334d..71ca363e 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -669,36 +669,31 @@ class Plyr { * @param {number} input - Quality level */ set quality(input) { - let quality = null; + const config = this.config.quality; + const options = this.options.quality; - if (!utils.is.empty(input)) { - quality = Number(input); - } - - if (!utils.is.number(quality)) { - quality = this.storage.get('quality'); - } - - if (!utils.is.number(quality)) { - quality = this.config.quality.selected; - } - - if (!utils.is.number(quality)) { - quality = this.config.quality.default; - } - - if (!this.options.quality.length) { + if (!options.length) { return; } - if (!this.options.quality.includes(quality)) { - const closest = utils.closest(this.options.quality, quality); + let quality = ([ + !utils.is.empty(input) && Number(input), + this.storage.get('quality'), + config.selected, + config.default, + ]).find(utils.is.number); + + if (!options.includes(quality)) { + const closest = utils.closest(options, quality); this.debug.warn(`Unsupported quality option: ${quality}, using ${closest} instead`); quality = closest; } + // Trigger request event + utils.dispatchEvent.call(this, this.media, 'qualityrequested', false, { quality }); + // Update config - this.config.quality.selected = quality; + config.selected = quality; // Set quality this.media.quality = quality; |