diff --git a/plugins/quality-changer/front.js b/plugins/quality-changer/front.js new file mode 100644 index 00000000..d167776c --- /dev/null +++ b/plugins/quality-changer/front.js @@ -0,0 +1,41 @@ +const { ElementFromFile, templatePath } = require("../utils"); +const dialog = require('electron').remote.dialog + +function $(selector) { return document.querySelector(selector); } + +const qualitySettingsButton = ElementFromFile( + templatePath(__dirname, "qualitySettingsTemplate.html") +); + + +module.exports = () => { + document.addEventListener('apiLoaded', setup); +} + +function setup(event) { + const api = event.detail; + + $('.top-row-buttons.ytmusic-player').prepend(qualitySettingsButton); + + qualitySettingsButton.onclick = function chooseQuality() { + if (api.getPlayerState() === 2) api.playVideo(); + else if (api.getPlayerState() === 1) api.pauseVideo(); + + const currentIndex = api.getAvailableQualityLevels().indexOf(api.getPlaybackQuality()) + + dialog.showMessageBox({ + type: "question", + buttons: api.getAvailableQualityLabels(), + defaultId: currentIndex, + title: "Choose Video Quality", + message: "Choose Video Quality:", + detail: `Current Quality: ${api.getAvailableQualityLabels()[currentIndex]}`, + cancelId: -1 + }).then((promise) => { + if (promise.response === -1) return; + const newQuality = api.getAvailableQualityLevels()[promise.response]; + api.setPlaybackQualityRange(newQuality); + api.setPlaybackQuality(newQuality) + }) + } +} diff --git a/plugins/quality-changer/templates/qualitySettingsTemplate.html b/plugins/quality-changer/templates/qualitySettingsTemplate.html new file mode 100644 index 00000000..64c012fe --- /dev/null +++ b/plugins/quality-changer/templates/qualitySettingsTemplate.html @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file