diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.ts | 2 | ||||
-rw-r--r-- | src/content.ts | 62 | ||||
-rw-r--r-- | src/popup.ts | 7 |
3 files changed, 44 insertions, 27 deletions
diff --git a/src/config.ts b/src/config.ts index 9d69e681..70263d5a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -8,6 +8,7 @@ interface SBConfig { userID: string, sponsorTimes: SBMap<string, any>, whitelistedChannels: string[], + forceChannelCheck: boolean, startSponsorKeybind: string, submitKeybind: string, minutesSaved: number, @@ -107,6 +108,7 @@ var Config: SBObject = { userID: null, sponsorTimes: new SBMap("sponsorTimes"), whitelistedChannels: [], + forceChannelCheck: false, startSponsorKeybind: ";", submitKeybind: "'", minutesSaved: 0, diff --git a/src/content.ts b/src/content.ts index 83df8952..758a5bb4 100644 --- a/src/content.ts +++ b/src/content.ts @@ -463,7 +463,7 @@ function startSponsorSchedule(includeIntersectingSegments: boolean = false, curr cancelSponsorSchedule(); if (video.paused) return; - if (Config.config.disableSkipping || channelWhitelisted){ + if (Config.config.disableSkipping || channelWhitelisted || (channelID === null && Config.config.forceChannelCheck)){ return; } @@ -637,30 +637,7 @@ function sponsorsLookup(id: string) { } } - if (!switchingVideos) { - // See if there are any starting sponsors - let startingSponsor: number = -1; - for (const time of sponsorTimes) { - if (time.segment[0] <= video.currentTime && time.segment[0] > startingSponsor && time.segment[1] > video.currentTime) { - startingSponsor = time.segment[0]; - break; - } - } - if (startingSponsor === -1) { - for (const time of sponsorTimesSubmitting) { - if (time.segment[0] <= video.currentTime && time.segment[0] > startingSponsor && time.segment[1] > video.currentTime) { - startingSponsor = time.segment[0]; - break; - } - } - } - - if (startingSponsor !== -1) { - startSponsorSchedule(false, startingSponsor); - } else { - startSponsorSchedule(); - } - } + startSkipScheduleCheckingForStartSponsors(); // Reset skip save sponsorSkipped = []; @@ -702,6 +679,38 @@ function sponsorsLookup(id: string) { } /** + * Only should be used when it is okay to skip a sponsor when in the middle of it + * + * Ex. When segments are first loaded + */ +function startSkipScheduleCheckingForStartSponsors() { + if (!switchingVideos) { + // See if there are any starting sponsors + let startingSponsor: number = -1; + for (const time of sponsorTimes) { + if (time.segment[0] <= video.currentTime && time.segment[0] > startingSponsor && time.segment[1] > video.currentTime) { + startingSponsor = time.segment[0]; + break; + } + } + if (startingSponsor === -1) { + for (const time of sponsorTimesSubmitting) { + if (time.segment[0] <= video.currentTime && time.segment[0] > startingSponsor && time.segment[1] > video.currentTime) { + startingSponsor = time.segment[0]; + break; + } + } + } + + if (startingSponsor !== -1) { + startSponsorSchedule(false, startingSponsor); + } else { + startSponsorSchedule(); + } + } +} + +/** * Get the video info for the current tab from YouTube */ function getVideoInfo() { @@ -807,6 +816,9 @@ function whitelistCheck() { if (whitelistedChannels != undefined && whitelistedChannels.includes(channelID)) { channelWhitelisted = true; } + + // check if the start of segments were missed + if (sponsorTimes && sponsorTimes.length > 0) startSkipScheduleCheckingForStartSponsors(); } /** diff --git a/src/popup.ts b/src/popup.ts index 93ab75ca..914dddc5 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -51,6 +51,7 @@ async function runThePopup(messageListener?: MessageListener) { // Top toggles "whitelistChannel", "unwhitelistChannel", + "whitelistForceCheck", "disableSkipping", "enableSkipping", // Options @@ -102,6 +103,7 @@ async function runThePopup(messageListener?: MessageListener) { //setup click listeners PageElements.sponsorStart.addEventListener("click", sendSponsorStartMessage); PageElements.whitelistChannel.addEventListener("click", whitelistChannel); + PageElements.whitelistForceCheck.addEventListener("click", openOptions); PageElements.unwhitelistChannel.addEventListener("click", unwhitelistChannel); PageElements.disableSkipping.addEventListener("click", () => toggleSkipping(true)); PageElements.enableSkipping.addEventListener("click", () => toggleSkipping(false)); @@ -939,6 +941,7 @@ async function runThePopup(messageListener?: MessageListener) { //change button PageElements.whitelistChannel.style.display = "none"; PageElements.unwhitelistChannel.style.display = "unset"; + if (!Config.config.forceChannelCheck) PageElements.whitelistForceCheck.style.display = "unset"; PageElements.downloadedSponsorMessageTimes.innerText = chrome.i18n.getMessage("channelWhitelisted"); PageElements.downloadedSponsorMessageTimes.style.fontWeight = "bold"; @@ -971,7 +974,7 @@ async function runThePopup(messageListener?: MessageListener) { }, tabs => { messageHandler.sendMessage( tabs[0].id, - {message: 'getChannelURL'}, + {message: 'getChannelID'}, function(response) { //get whitelisted channels let whitelistedChannels = Config.config.whitelistedChannels; @@ -980,7 +983,7 @@ async function runThePopup(messageListener?: MessageListener) { } //remove this channel - let index = whitelistedChannels.indexOf(response.channelURL); + let index = whitelistedChannels.indexOf(response.channelID); whitelistedChannels.splice(index, 1); //change button |