const PATTERN_ROW = (addr, pattern) => `
|
|
`;
function restoreOptions() {
function parseJsonPatterns(jsonPatterns) {
console.log('JSON PATTERNS', jsonPatterns);
if (!jsonPatterns.patterns) {
return [];
}
try {
return JSON.parse(jsonPatterns.patterns);
} catch (e) {
return [];
}
}
function defaultPatterns() {
return [
{server: '', pattern: '.*'},
];
}
function setPatterns(jsonPatterns) {
patterns = parseJsonPatterns(jsonPatterns);
if (patterns.length === 0) {
patterns = defaultPatterns();
}
console.log('PATTERNS', patterns);
var html = '';
patterns.forEach(item => {
html += PATTERN_ROW(item.server, item.pattern);
});
document.querySelector(".js-pattern-rows").innerHTML = html;
}
function onError(error) {
console.log(`Error: ${error}`);
}
var getting = browser.storage.local.get("patterns");
getting.then(setPatterns, onError);
}
function saveOptions(evt) {
evt.preventDefault();
var patterns = [];
var rows = document.querySelectorAll(".js-pattern-rows tr");
rows.forEach(row => {
var server = row.querySelector('[name="server"]').value;
var pattern = row.querySelector('[name="pattern"]').value;
patterns.push({server: server, pattern: pattern});
});
console.log('PATTERNS', patterns);
browser.storage.local.set({ patterns: JSON.stringify(patterns) });
}
function addRow(evt) {
evt.preventDefault();
var html = document.querySelector(".js-pattern-rows").innerHTML;
html += PATTERN_ROW('', '');
document.querySelector(".js-pattern-rows").innerHTML = html;
}
document.addEventListener("DOMContentLoaded", restoreOptions);
document.querySelector(".js-submit").addEventListener("click", saveOptions);
document.querySelector(".js-add").addEventListener("click", addRow);