somtodaynt/popup/js/index.js

107 lines
3.1 KiB
JavaScript
Raw Normal View History

console.log("SOMtodayn't popup loaded.");
var request;
var response;
// Get slogans from background script
request = browser.runtime.sendMessage({
type: "get"
});
request.then(function(message) {
2019-11-22 14:29:27 +01:00
var darkmode = message.response[0];
var sloganArray = message.response[1];
// Add a slogan to the array
function addSlogan(value) {
sloganArray.push(value);
updateSlogans(sloganArray);
}
// Remove a slogan from the array
function removeSlogan(id) {
var array = [];
if (sloganArray.length > 1) {
for (let index = 0; index < sloganArray.length; index++) {
const element = sloganArray[index];
if (index != id) {
array.push(element);
}
}
updateSlogans(array);
} else {
window.alert("U kunt de laatste slogan niet verwijderen.");
}
}
// Send updated array to background script
function updateSlogans(array) {
request = browser.runtime.sendMessage({
2019-11-22 14:29:27 +01:00
type: "setSlogans",
value: array
});
request.then(function() {
location.reload();
}, handleError);
}
2019-11-22 14:29:27 +01:00
// Add event listener to checkbox
var checkbox = document.getElementById('tonight');
if (darkmode) {
checkbox.checked = true;
}
checkbox.addEventListener('click', function(event) {
2019-11-22 16:01:09 +01:00
// Update value in local storage
2019-11-22 14:29:27 +01:00
request = browser.runtime.sendMessage({
type: "setTonight",
value: checkbox.checked
});
2019-11-22 16:01:09 +01:00
// Reload all SOMtoday tabs
var reload = browser.tabs.query({});
reload.then(logTabs, onError);
2019-11-22 14:29:27 +01:00
});
2019-11-22 16:01:09 +01:00
// Find id of somtoday.nl tab
function logTabs(tabs) {
for (let tab of tabs) {
// Match only tabs with url somtoday.nl
if (tab.url.includes('somtoday.nl')) {
browser.tabs.sendMessage(tab.id, 'reload');
}
}
}
// Handle query errors
function onError(error) {
console.log(`Error: ${error}`);
}
2019-11-22 14:29:27 +01:00
// Add existing slogans to list items in the popup
var sloganList = '';
for (let index = 0; index < sloganArray.length; index++) {
const element = sloganArray[index];
sloganList = sloganList + `<ul>${element}</ul>`;
}
document.getElementById('sloganList').innerHTML = sloganList;
// Get value for new slogan
document.getElementById('sloganForm').addEventListener('submit', function(event) {
event.preventDefault();
addSlogan(event.target.children[0].value);
event.target.children[0].value = '';
});
// Add event listener to every list item for deleting slogans
var listElements = document.querySelectorAll("div#sloganList > ul");
for (let index = 0; index < listElements.length; index++) {
const element = listElements[index];
element.addEventListener("click", function() {
removeSlogan(index);
});
}
}, handleError);
function handleError(error) {
console.error(`SOMtodayn't Error: ${error}`);
}