Fixes #2
diff --git a/options.js b/options.js
index d8ce844..48cd864 100644
--- a/options.js
+++ b/options.js
@@ -2,29 +2,49 @@
return Object.keys(obj).length === 0;
}
+var defaultOptions = {
+ "list": true,
+ "thread": true,
+ "fixedtoolbar": false,
+ "redirect": false,
+ "history": false
+};
+
+function cleanUpOptions(options) {
+ var ok = true;
+ for (const [opt, value] of Object.entries(defaultOptions)) {
+ if (!opt in options) {
+ ok = false;
+ options[opt] = value;
+ }
+ }
+
+ if (!ok) {
+ chrome.storage.sync.set(options);
+ }
+}
+
function save() {
- chrome.storage.sync.set({
- "list": document.querySelector("#list").checked,
- "thread": document.querySelector("#thread").checked
- }, function() {
+ var options = defaultOptions;
+
+ Object.keys(options).forEach(function (opt) {
+ options[opt] = document.querySelector("#"+opt).checked;
+ });
+
+ chrome.storage.sync.set(options, function() {
window.close();
});
}
window.addEventListener("load", function() {
chrome.storage.sync.get(null, function(items) {
- if (isEmpty(items)) {
- items = {"list": true, "thread": true};
- chrome.storage.sync.set(items);
- }
+ cleanUpOptions(items);
- if (items.list === true) {
- document.querySelector("#list").checked = true;
- }
-
- if (items.thread === true) {
- document.querySelector("#thread").checked = true;
- }
+ Object.keys(defaultOptions).forEach(function(opt) {
+ if (items[opt] === true) {
+ document.querySelector("#"+opt).checked = true;
+ }
+ });
document.querySelector("#save").addEventListener("click", save);
});