(async() => {
function set(key, value) {
chrome.storage.local.set({ [key]: value })
};
function get(key) {
return new Promise(resolve => {
chrome.storage.local.get([key], result => {
resolve(result[key])
})
})
};
function validURL(str) {
var pattern = new RegExp('^(https?:\\/\\/)?'+
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+
'((\\d{1,3}\\.){3}\\d{1,3}))'+
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+
'(\\?[;&a-z\\d%_.~+=-]*)?'+
'(\\#[-a-z\\d_]*)?$','i');
return !!pattern.test(str) || new URL(str).hostname === "localhost";
}
const checkbox = document.querySelector(".check")
const input = document.querySelector("input")
input.value = await get("url") || "";
checkbox.checked = await get("checked") || false;
input.onchange = () => {
document.querySelector("p").innerHTML = ""
}
checkbox.addEventListener("click", async (event) => {
if (await get("checked")) {
set("checked", checkbox.checked);
} else {
if (validURL(input.value)) {
set("url", input.value);
set("checked", checkbox.checked);
} else {
document.querySelector("p").innerHTML = "Invalid URL";
checkbox.checked = false;
}
}
})
})();