From c8a852bf2ece75a4e07039d49d6a425b03deb536 Mon Sep 17 00:00:00 2001 From: Fermin Cirella Date: Sat, 22 Oct 2022 01:13:04 -0300 Subject: [PATCH] Plugin Captions Selector - Check if there is caption tracks available, add "disable captions" --- plugins/captions-selector/front.js | 33 ++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/plugins/captions-selector/front.js b/plugins/captions-selector/front.js index 62324514..f8c83cb9 100644 --- a/plugins/captions-selector/front.js +++ b/plugins/captions-selector/front.js @@ -15,17 +15,32 @@ function setup(event) { document.querySelector('.right-controls-buttons').append(captionsSettingsButton); captionsSettingsButton.onclick = function chooseQuality() { - api.pauseVideo(); - - const currentCaptionTrack = api.getOption("captions", "track"); const captionTrackList = api.getOption("captions", "tracklist"); - const currentIndex = captionTrackList.indexOf(captionTrackList.find(track => track.languageCode === currentCaptionTrack.languageCode)); + if (captionTrackList?.length) { + api.pauseVideo(); - ipcRenderer.invoke('captionsSelector', captionTrackList.map(track => track.displayName), currentIndex).then(promise => { - if (promise.response === -1) return; - const newCaptions = captionTrackList[promise.response]; - api.setOption("captions", "track", { languageCode: newCaptions.languageCode }); - }); + const currentCaptionTrack = api.getOption("captions", "track"); + const currentIndex = captionTrackList.indexOf(captionTrackList.find(track => track.languageCode === currentCaptionTrack.languageCode)); + + const captionLabels = [ + ...captionTrackList.map(track => track.displayName), + 'None' + ]; + + ipcRenderer.invoke('captionsSelector', captionLabels, currentIndex).then(promise => { + if (promise.response === -1) return; + + const newCaptions = captionTrackList[promise.response]; + if (newCaptions) { + api.loadModule("captions"); + api.setOption("captions", "track", { languageCode: newCaptions.languageCode }); + } else { + api.unloadModule("captions"); + } + + setTimeout(() => api.playVideo()); + }); + } } }