aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/content.ts
diff options
context:
space:
mode:
authorAjay <[email protected]>2023-08-22 15:23:04 -0400
committerAjay <[email protected]>2023-08-22 15:23:04 -0400
commitb3efa1f787a7e160704bf8d044e1beaac3b873f7 (patch)
tree8a36dce2f489e431499a669e6522497e776e80ef /src/content.ts
parent9a18e70e34ea067ca15b6f776d39ae61bafab323 (diff)
downloadSponsorBlock-b3efa1f787a7e160704bf8d044e1beaac3b873f7.tar.gz
SponsorBlock-b3efa1f787a7e160704bf8d044e1beaac3b873f7.zip
Add compatibility with video speed controller extension
Diffstat (limited to 'src/content.ts')
-rw-r--r--src/content.ts27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/content.ts b/src/content.ts
index 46eeda10..460aaa0f 100644
--- a/src/content.ts
+++ b/src/content.ts
@@ -819,6 +819,8 @@ function incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boole
}
}
+let playbackRateCheckInterval: NodeJS.Timeout | null = null;
+let lastPlaybackSpeed = 1;
let setupVideoListenersFirstTime = true;
function setupVideoListeners() {
//wait until it is loaded
@@ -907,6 +909,27 @@ function setupVideoListeners() {
startSponsorSchedule();
}
+
+ if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);
+ lastPlaybackSpeed = getVideo().playbackRate;
+
+ // Video speed controller compatibility
+ // That extension makes rate change events not propagate
+ if (document.body.classList.contains("vsc-initialized")) {
+ playbackRateCheckInterval = setInterval(() => {
+ if ((!getVideoID() || getVideo().paused) && playbackRateCheckInterval) {
+ // Video is gone, stop checking
+ clearInterval(playbackRateCheckInterval);
+ return;
+ }
+
+ if (getVideo().playbackRate !== lastPlaybackSpeed) {
+ lastPlaybackSpeed = getVideo().playbackRate;
+
+ rateChangeListener();
+ }
+ }, 2000);
+ }
};
getVideo().addEventListener('playing', playingListener);
@@ -942,6 +965,8 @@ function setupVideoListeners() {
lastCheckVideoTime = -1;
lastCheckTime = 0;
+ if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);
+
lastKnownVideoTime.videoTime = null;
lastKnownVideoTime.preciseTime = null;
updateWaitingTime();
@@ -973,6 +998,8 @@ function setupVideoListeners() {
getVideo().removeEventListener('videoSpeed_ratechange', rateChangeListener);
getVideo().removeEventListener('pause', pauseListener);
getVideo().removeEventListener('waiting', waitingListener);
+
+ if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);
});
}
}