metube-browser-extension/src/options.js

88 lines
2.5 KiB
JavaScript

async function saveOptions() {
let url = document.getElementById("metube").value;
if (url.endsWith('/')) {
url = url.slice(0, -1)
}
let sites = document.getElementById("additional").value;
let clickBehavior = document.querySelector('input[name="click-behavior"]:checked').value;
let contextMenuClickBehavior = document.querySelector('input[name="context-menu-click-behavior"]:checked').value;
let defaultFormat = document.getElementById('default_format').value
chrome.storage.sync.set({
"metube": url,
"sites": sites,
"clickBehavior": clickBehavior,
"contextMenuClickBehavior": contextMenuClickBehavior,
"defaultFormat": defaultFormat,
}, function () {
document.getElementById("saved").classList.remove('hidden');
setTimeout(function () {
document.getElementById("saved").classList.add('hidden');
}, 1000 * 10)
});
sites = splitLines(sites);
// todo: fix it
// also need make function for check string
// https://developer.chrome.com/docs/extensions/mv3/match_patterns/
if(sites.length <= 1){
return;
}
chrome.contextMenus.update(
'metube',
{
targetUrlPatterns: [
'https://www.youtube.com/*',
'https://m.youtube.com/*',
'https://youtu.be/*',
...sites
]
}
);
}
async function restoreOptions() {
chrome.storage.sync.get([
'metube',
'sites',
'clickBehavior',
'contextMenuClickBehavior',
'defaultFormat'
], function (data) {
if (data.metube !== undefined) {
document.getElementById("metube").value = data.metube;
}
if (data.sites !== undefined) {
document.getElementById("additional").value = data.sites;
}
if (data.clickBehavior !== undefined) {
document.getElementById(data.clickBehavior).checked = true;
}
if (data.contextMenuClickBehavior !== undefined) {
document.getElementById(data.contextMenuClickBehavior).checked = true;
}
if (data.defaultFormat !== undefined) {
document.getElementById('default_format').value = data.defaultFormat;
}
})
}
function splitLines(t) { return t.split(/\r\n|\r|\n/); }
window.addEventListener("DOMContentLoaded", restoreOptions, { passive: true });
document.querySelector("form").addEventListener("submit", (e) => {
e.preventDefault();
saveOptions();
}, { passive: false });