mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-27 01:48:48 +03:00
Added option to enable invidious support.
This commit is contained in:
@@ -344,5 +344,11 @@
|
|||||||
},
|
},
|
||||||
"keybindCurrentlySet": {
|
"keybindCurrentlySet": {
|
||||||
"message": ". It is currently set to:"
|
"message": ". It is currently set to:"
|
||||||
|
},
|
||||||
|
"supportInvidious": {
|
||||||
|
"message": "Support Invidious"
|
||||||
|
},
|
||||||
|
"supportInvidiousDescription": {
|
||||||
|
"message": "Invidious (invidio.us) is a third party YouTube client. To enable support, you must accept the extra permissions."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,7 @@
|
|||||||
{
|
{
|
||||||
"matches": [
|
"matches": [
|
||||||
"https://*.youtube.com/*",
|
"https://*.youtube.com/*",
|
||||||
"https://www.youtube-nocookie.com/embed/*",
|
"https://www.youtube-nocookie.com/embed/*"
|
||||||
"https://*.invidio.us/*",
|
|
||||||
"https://*.invidiou.sh/*"
|
|
||||||
],
|
],
|
||||||
"all_frames": true,
|
"all_frames": true,
|
||||||
"js": [
|
"js": [
|
||||||
@@ -46,7 +44,12 @@
|
|||||||
"permissions": [
|
"permissions": [
|
||||||
"storage",
|
"storage",
|
||||||
"notifications",
|
"notifications",
|
||||||
"https://sponsor.ajay.app/*"
|
"https://sponsor.ajay.app/*",
|
||||||
|
"https://*.invidio.us/*"
|
||||||
|
],
|
||||||
|
"optional_permissions": [
|
||||||
|
"declarativeContent",
|
||||||
|
"https://*/*"
|
||||||
],
|
],
|
||||||
"browser_action": {
|
"browser_action": {
|
||||||
"default_title": "__MSG_Name__",
|
"default_title": "__MSG_Name__",
|
||||||
|
|||||||
@@ -20,7 +20,23 @@
|
|||||||
<h1>__MSG_Options__</h1>
|
<h1>__MSG_Options__</h1>
|
||||||
|
|
||||||
<div id="options" class="hidden">
|
<div id="options" class="hidden">
|
||||||
|
|
||||||
|
<div option-type="toggle" sync-option="supportInvidious">
|
||||||
|
<label class="switch-container" label-name="__MSG_supportInvidious__">
|
||||||
|
<label class="switch">
|
||||||
|
<input type="checkbox">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<div class="small-description">__MSG_supportInvidiousDescription__</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
<div option-type="toggle" toggle-type="reverse" sync-option="disableAutoSkip">
|
<div option-type="toggle" toggle-type="reverse" sync-option="disableAutoSkip">
|
||||||
<label class="switch-container" label-name="__MSG_autoSkip__">
|
<label class="switch-container" label-name="__MSG_autoSkip__">
|
||||||
|
|||||||
@@ -16,21 +16,76 @@ async function init() {
|
|||||||
let option = optionsElements[i].getAttribute("sync-option");
|
let option = optionsElements[i].getAttribute("sync-option");
|
||||||
chrome.storage.sync.get([option], function(result) {
|
chrome.storage.sync.get([option], function(result) {
|
||||||
let optionResult = result[option];
|
let optionResult = result[option];
|
||||||
if (optionResult != undefined) {
|
let checkbox = optionsElements[i].querySelector("input");
|
||||||
let checkbox = optionsElements[i].querySelector("input");
|
let reverse = optionsElements[i].getAttribute("toggle-type") === "reverse";
|
||||||
checkbox.checked = optionResult;
|
|
||||||
|
|
||||||
let reverse = optionsElements[i].getAttribute("toggle-type") === "reverse";
|
if (optionResult != undefined) {
|
||||||
|
checkbox.checked = optionResult;
|
||||||
|
|
||||||
if (reverse) {
|
if (reverse) {
|
||||||
optionsElements[i].querySelector("input").checked = !optionResult;
|
optionsElements[i].querySelector("input").checked = !optionResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
checkbox.addEventListener("click", () =>{
|
|
||||||
setOptionValue(option, reverse ? !checkbox.checked : checkbox.checked)
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkbox.addEventListener("click", () =>{
|
||||||
|
setOptionValue(option, reverse ? !checkbox.checked : checkbox.checked);
|
||||||
|
// See if anything extra must be run
|
||||||
|
switch (option) {
|
||||||
|
case "supportInvidious":
|
||||||
|
if (checkbox.checked) {
|
||||||
|
// Request permission
|
||||||
|
chrome.permissions.request({
|
||||||
|
origins: ["https://*.invidio.us/*"],
|
||||||
|
permissions: ["declarativeContent"]
|
||||||
|
}, function (granted) {
|
||||||
|
if (granted) {
|
||||||
|
chrome.declarativeContent.onPageChanged.removeRules(["invidious"], function() {
|
||||||
|
// Add page rule
|
||||||
|
let rule = {
|
||||||
|
id: "invidious",
|
||||||
|
conditions: [
|
||||||
|
new chrome.declarativeContent.PageStateMatcher({
|
||||||
|
pageUrl: { urlMatches: "https://*.invidio.us/*" }
|
||||||
|
})
|
||||||
|
],
|
||||||
|
actions: [new chrome.declarativeContent.RequestContentScript({
|
||||||
|
allFrames: true,
|
||||||
|
js: [
|
||||||
|
"config.js",
|
||||||
|
"utils/previewBar.js",
|
||||||
|
"utils/skipNotice.js",
|
||||||
|
"utils.js",
|
||||||
|
"content.js",
|
||||||
|
"popup.js"
|
||||||
|
],
|
||||||
|
css: [
|
||||||
|
"content.css",
|
||||||
|
"./libs/Source+Sans+Pro.css",
|
||||||
|
"popup.css"
|
||||||
|
]
|
||||||
|
})]
|
||||||
|
};
|
||||||
|
|
||||||
|
chrome.declarativeContent.onPageChanged.addRules([rule], console.log);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setOptionValue(option, false);
|
||||||
|
checkbox.checked = false;
|
||||||
|
|
||||||
|
chrome.declarativeContent.onPageChanged.removeRules(["invidious"]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
chrome.declarativeContent.onPageChanged.removeRules(["invidious"]);
|
||||||
|
chrome.permissions.remove({
|
||||||
|
origins: ["https://*.invidio.us/*"]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
checksLeft--;
|
checksLeft--;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user