Merge pull request #114 from ajayyy/experimental-ajay

Made preview bar update more and made the sponsor times reset more.
This commit is contained in:
Ajay Ramachandran 2019-08-13 21:10:48 -04:00 committed by GitHub
commit 2431f44a29
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -18,6 +18,12 @@ var v;
var listenerAdded; var listenerAdded;
//the video id of the last preview bar update
var lastPreviewBarUpdate;
//whether the duration listener listening for the duration changes of the video has been setup yet
var durationListenerSetUp = false;
//the channel this video is about //the channel this video is about
var channelURL; var channelURL;
@ -94,7 +100,11 @@ function messageListener(request, sender, sendResponse) {
//messages from popup script //messages from popup script
if (request.message == "update") { if (request.message == "update") {
if(id = getYouTubeVideoID(document.URL)) videoIDChange(id); if(id = getYouTubeVideoID(document.URL)){
videoIDChange(id);
} else {
resetValues();
}
} }
if (request.message == "sponsorStart") { if (request.message == "sponsorStart") {
@ -201,6 +211,24 @@ document.onkeydown = function(e){
} }
} }
function resetValues() {
//reset last sponsor times
lastTime = -1;
lastUnixTimeSkipped = -1;
//reset sponsor times
sponsorTimes = null;
UUIDs = null;
sponsorVideoID = id;
sponsorLookupRetries = 0;
//empty the preview bar
previewBar.set([], [], 0);
//reset sponsor data found check
sponsorDataFound = false;
}
function videoIDChange(id) { function videoIDChange(id) {
//not a url change //not a url change
if (sponsorVideoID == id) return; if (sponsorVideoID == id) return;
@ -237,24 +265,11 @@ function videoIDChange(id) {
//close popup //close popup
closeInfoMenu(); closeInfoMenu();
//reset last sponsor times resetValues();
lastTime = -1;
lastUnixTimeSkipped = -1;
//reset sponsor times
sponsorTimes = null;
UUIDs = null;
sponsorVideoID = id;
sponsorLookupRetries = 0;
//empty the preview bar
previewBar.set([], [], 0);
//see if there is a video start time //see if there is a video start time
youtubeVideoStartTime = getYouTubeVideoStartTime(document.URL); youtubeVideoStartTime = getYouTubeVideoStartTime(document.URL);
//reset sponsor data found check
sponsorDataFound = false;
sponsorsLookup(id); sponsorsLookup(id);
//make sure everything is properly added //make sure everything is properly added
@ -312,12 +327,18 @@ function videoIDChange(id) {
function sponsorsLookup(id) { function sponsorsLookup(id) {
v = document.querySelector('video') // Youtube video player v = document.querySelector('video') // Youtube video player
//there is no video here //there is no video here
if (v == null) { if (v == null) {
setTimeout(() => sponsorsLookup(id), 100); setTimeout(() => sponsorsLookup(id), 100);
return; return;
} }
if (!durationListenerSetUp) {
durationListenerSetUp = true;
//wait until it is loaded
v.addEventListener('durationchange', updatePreviewBar);
}
//check database for sponsor times //check database for sponsor times
sendRequestToServer('GET', "/api/getVideoSponsorTimes?videoID=" + id, function(xmlhttp) { sendRequestToServer('GET', "/api/getVideoSponsorTimes?videoID=" + id, function(xmlhttp) {
@ -329,11 +350,9 @@ function sponsorsLookup(id) {
//update the preview bar //update the preview bar
//leave the type blank for now until categories are added //leave the type blank for now until categories are added
if (isNaN(v.duration)) { if (lastPreviewBarUpdate == id || (lastPreviewBarUpdate == null && !isNaN(v.duration))) {
//wait until it is loaded
v.addEventListener('durationchange', updatePreviewBar);
} else {
//set it now //set it now
//otherwise the listener can handle it
updatePreviewBar(); updatePreviewBar();
} }
@ -374,8 +393,8 @@ function sponsorsLookup(id) {
function updatePreviewBar() { function updatePreviewBar() {
previewBar.set(sponsorTimes, [], v.duration); previewBar.set(sponsorTimes, [], v.duration);
//the listener is only needed once //update last video id
v.removeEventListener('durationchange', updatePreviewBar); lastPreviewBarUpdate = getYouTubeVideoID(document.URL);
} }
function getChannelID() { function getChannelID() {