Merge branch 'master' of https://github.com/ajayyy/SponsorBlock into experimental-ajay

This commit is contained in:
Ajay Ramachandran
2020-01-09 14:28:40 -05:00
8 changed files with 502 additions and 527 deletions

View File

@@ -4,6 +4,7 @@
<link href="options.css" rel="stylesheet"/>
<script src="../utils.js"></script>
<script src="../SB.js"></script>
<script src="options.js"></script>
</head>

View File

@@ -3,38 +3,33 @@ window.addEventListener('DOMContentLoaded', init);
async function init() {
localizeHtmlPage();
await wait(() => SB.config !== undefined);
// Set all of the toggle options to the correct option
let optionsContainer = document.getElementById("options");
let optionsElements = optionsContainer.children;
// How many checks are left to be done
let checksLeft = 0;
for (let i = 0; i < optionsElements.length; i++) {
switch (optionsElements[i].getAttribute("option-type")) {
case "toggle":
let option = optionsElements[i].getAttribute("sync-option");
chrome.storage.sync.get([option], function(result) {
let optionResult = result[option];
if (optionResult != undefined) {
let checkbox = optionsElements[i].querySelector("input");
checkbox.checked = optionResult;
let reverse = optionsElements[i].getAttribute("toggle-type") === "reverse";
let optionResult = SB.config[option];
if (reverse) {
optionsElements[i].querySelector("input").checked = !optionResult;
}
let checkbox = optionsElements[i].querySelector("input");
let reverse = optionsElements[i].getAttribute("toggle-type") === "reverse";
checkbox.addEventListener("click", () =>{
setOptionValue(option, reverse ? !checkbox.checked : checkbox.checked)
});
if (optionResult != undefined) {
checkbox.checked = optionResult;
if (reverse) {
optionsElements[i].querySelector("input").checked = !optionResult;
}
}
checksLeft--;
checkbox.addEventListener("click", () =>{
SB.config[option] = reverse ? !checkbox.checked : checkbox.checked;
});
checksLeft++;
break;
case "text-change":
let button = optionsElements[i].querySelector(".trigger-button");
@@ -49,8 +44,6 @@ async function init() {
}
}
await wait(() => checksLeft == 0, 1000, 50);
optionsContainer.classList.remove("hidden");
optionsContainer.classList.add("animated");
}
@@ -68,21 +61,19 @@ function activateKeybindChange(element) {
let option = element.getAttribute("sync-option");
chrome.storage.sync.get([option], function(result) {
let currentlySet = result[option] !== null ? chrome.i18n.getMessage("keybindCurrentlySet") : "";
let status = element.querySelector(".option-hidden-section > .keybind-status");
status.innerText = chrome.i18n.getMessage("keybindDescription") + currentlySet;
if (result[option] !== null) {
let statusKey = element.querySelector(".option-hidden-section > .keybind-status-key");
statusKey.innerText = result[option];
}
let currentlySet = SB.config[option] !== null ? chrome.i18n.getMessage("keybindCurrentlySet") : "";
element.querySelector(".option-hidden-section").classList.remove("hidden");
document.addEventListener("keydown", (e) => keybindKeyPressed(element, e), {once: true});
});
let status = element.querySelector(".option-hidden-section > .keybind-status");
status.innerText = chrome.i18n.getMessage("keybindDescription") + currentlySet;
if (SB.config[option] !== null) {
let statusKey = element.querySelector(".option-hidden-section > .keybind-status-key");
statusKey.innerText = SB.config[option];
}
element.querySelector(".option-hidden-section").classList.remove("hidden");
document.addEventListener("keydown", (e) => keybindKeyPressed(element, e), {once: true});
}
/**
@@ -97,7 +88,7 @@ function keybindKeyPressed(element, e) {
let option = element.getAttribute("sync-option");
chrome.storage.sync.set({[option]: key});
SB.config[option] = key;
let status = element.querySelector(".option-hidden-section > .keybind-status");
status.innerText = chrome.i18n.getMessage("keybindDescriptionComplete");
@@ -123,23 +114,11 @@ function activateTextChange(element) {
let textBox = element.querySelector(".option-text-box");
let option = element.getAttribute("sync-option");
textBox.value = SB.config[option];
chrome.storage.sync.get([option], function(result) {
textBox.value = result[option];
let setButton = element.querySelector(".text-change-set");
setButton.addEventListener("click", () => {SB.config[option] = textBox.value});
let setButton = element.querySelector(".text-change-set");
setButton.addEventListener("click", () => setOptionValue(option, textBox.value));
element.querySelector(".option-hidden-section").classList.remove("hidden");
});
element.querySelector(".option-hidden-section").classList.remove("hidden");
}
/**
* Called when an option has been changed.
*
* @param {string} option
* @param {*} value
*/
function setOptionValue(option, value) {
chrome.storage.sync.set({[option]: value});
}