Merge pull request #138 from ajayyy/experimental-ajay

Improved away function
This commit is contained in:
Ajay Ramachandran
2019-08-24 14:01:35 -04:00
committed by GitHub
3 changed files with 40 additions and 31 deletions

View File

@@ -666,12 +666,15 @@ function isSubmitButtonLoaded() {
return document.getElementById("submitButton") !== null; return document.getElementById("submitButton") !== null;
} }
function changeStartSponsorButton(showStartSponsor, uploadButtonVisible) { async function changeStartSponsorButton(showStartSponsor, uploadButtonVisible) {
if(!sponsorVideoID) return false; if(!sponsorVideoID) return false;
wait(isSubmitButtonLoaded).then(result => {
//make sure submit button is loaded
await wait(isSubmitButtonLoaded);
//if it isn't visible, there is no data //if it isn't visible, there is no data
let shouldHide = (uploadButtonVisible && !hideDeleteButtonPlayerControls) ? "unset":"none" let shouldHide = (uploadButtonVisible && !hideDeleteButtonPlayerControls) ? "unset" : "none"
document.getElementById("deleteButton").style.display = shouldHide; document.getElementById("deleteButton").style.display = shouldHide;
if (showStartSponsor) { if (showStartSponsor) {
showingStartSponsor = true; showingStartSponsor = true;
@@ -692,7 +695,6 @@ function changeStartSponsorButton(showStartSponsor, uploadButtonVisible) {
//disable submit button //disable submit button
document.getElementById("submitButton").style.display = "none"; document.getElementById("submitButton").style.display = "none";
} }
});
} }
function toggleStartSponsorButton() { function toggleStartSponsorButton() {

View File

@@ -1,7 +1,7 @@
{ {
"name": "__MSG_fullName__", "name": "__MSG_fullName__",
"short_name": "__MSG_Name__", "short_name": "__MSG_Name__",
"version": "1.1.5", "version": "1.1.6",
"default_locale": "en", "default_locale": "en",
"description": "__MSG_Description__", "description": "__MSG_Description__",
"content_scripts": [ "content_scripts": [

View File

@@ -1,25 +1,31 @@
// Function that can be used to wait for a condition before returning // Function that can be used to wait for a condition before returning
async function wait(condition, timeout = 5000, check = 100) { async function wait(condition, timeout = 5000, check = 100) {
return await new Promise((resolve, reject) => { return await new Promise((resolve, reject) => {
setTimeout(() => {reject("TIMEOUT")}, timeout); setTimeout(() => reject("TIMEOUT"), timeout);
const interval = setInterval(() => {
let result = condition(); let intervalCheck = () => {
if (result !== false) { let result = condition();
resolve(result); if (result !== false) {
clearInterval(interval); resolve(result);
}; clearInterval(interval);
}, check); };
}); };
let interval = setInterval(intervalCheck, check);
//run the check once first, this speeds it up a lot
intervalCheck();
});
} }
function getYouTubeVideoID(url) { function getYouTubeVideoID(url) {
//Attempt to parse url //Attempt to parse url
let urlObject = null; let urlObject = null;
try { try {
urlObject = new URL(url); urlObject = new URL(url);
} catch (e) { } catch (e) {
console.error("[SB] Unable to parse URL: " + url); console.error("[SB] Unable to parse URL: " + url);
return false; return false;
} }
//Check if valid hostname //Check if valid hostname
@@ -27,15 +33,16 @@ function getYouTubeVideoID(url) {
//Get ID from searchParam //Get ID from searchParam
if ((urlObject.pathname == "/watch" || urlObject.pathname == "/watch/") && urlObject.searchParams.has("v")) { if ((urlObject.pathname == "/watch" || urlObject.pathname == "/watch/") && urlObject.searchParams.has("v")) {
id = urlObject.searchParams.get("v"); id = urlObject.searchParams.get("v");
return id.length == 11 ? id : false; return id.length == 11 ? id : false;
} else if (urlObject.pathname.startsWith("/embed/")) { } else if (urlObject.pathname.startsWith("/embed/")) {
try { try {
return urlObject.pathname.substr(7, 11); return urlObject.pathname.substr(7, 11);
} catch (e) { } catch (e) {
console.error("[SB] Video ID not valid for " + url); console.error("[SB] Video ID not valid for " + url);
return false; return false;
} }
} }
return false;
return false;
} }