Simplify code

This commit is contained in:
Anton Vakhrushev 2018-08-23 13:57:19 +03:00
parent 40fa9b9f07
commit 53c583464d
4 changed files with 56 additions and 51 deletions

View File

@ -15,7 +15,6 @@
"permissions": [
"activeTab",
"notifications",
"tabs",
"storage",
"<all_urls>"
],

View File

@ -35,6 +35,7 @@
</form>
<script src="storage.js"></script>
<script src="options.js"></script>
</body>

View File

@ -5,51 +5,33 @@ const PATTERN_ROW = (addr, pattern) => `
</tr>
`;
function defaultPatterns() {
return [
{ server: '', pattern: '.*' },
];
}
function setPatterns(patterns) {
if (!patterns || patterns.length === 0) {
patterns = defaultPatterns();
}
console.log('PATTERNS', patterns);
var reducer = (acc, item) => acc + PATTERN_ROW(item.server, item.pattern);
var html = patterns.reduce(reducer, '');
document.querySelector(".js-pattern-rows").innerHTML = html;
}
function restoreOptions() {
function parseJsonPatterns(jsonPatterns) {
console.log('JSON PATTERNS', jsonPatterns);
if (!jsonPatterns.patterns) {
return [];
PatternStorage.get().then(
setPatterns,
(error) => {
console.log(`Error: ${error}`)
}
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) {
@ -59,19 +41,18 @@ function saveOptions(evt) {
rows.forEach(row => {
var server = row.querySelector('[name="server"]').value;
var pattern = row.querySelector('[name="pattern"]').value;
patterns.push({server: server, pattern: pattern});
if (server) {
patterns.push({server: server, pattern: pattern});
}
});
console.log('PATTERNS', patterns);
browser.storage.local.set({ patterns: JSON.stringify(patterns) });
PatternStorage.set(patterns);
}
function addRow(evt) {
evt.preventDefault();
var html = document.querySelector(".js-pattern-rows").innerHTML;
html += PATTERN_ROW('', '');
document.querySelector(".js-pattern-rows").innerHTML = html;
var el = document.querySelector(".js-pattern-rows");
el.innerHTML += PATTERN_ROW('', '');
}
document.addEventListener("DOMContentLoaded", restoreOptions);

24
storage.js Normal file
View File

@ -0,0 +1,24 @@
function PropertyStorage(name) {
parse = function (data) {
var propertyData = data[name];
if (!propertyData) {
return null;
}
try {
return JSON.parse(propertyData);
} catch (e) {
return null;
}
};
this.get = function () {
var getting = browser.storage.local.get(name);
return getting.then(parse);
};
this.set = function (value) {
return browser.storage.local.set({ patterns: JSON.stringify(value) });
};
}
PatternStorage = new PropertyStorage('patterns');