blob: af9dede617f42167b14cc15990679b4d4fed59ed [file] [log] [blame]
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
const defaultOptions = {
'list': true,
'thread': true,
'threadall': false,
'fixedtoolbar': false,
'redirect': false,
'history': false,
'loaddrafts': false,
'batchduplicate': false,
'escalatethreads': false,
'movethreads': false,
'increasecontrast': false,
'stickysidebarheaders': false,
'profileindicator': false,
};
const deprecatedOptions = [
'escalatethreads',
'movethreads',
'batchduplicate',
];
var savedSuccessfullyTimeout = null;
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);
}
return options;
}
function save() {
var options = defaultOptions;
Object.keys(options).forEach(function(opt) {
if (deprecatedOptions.includes(opt)) return;
options[opt] = document.querySelector('#' + opt).checked || false;
});
chrome.storage.sync.set(options, function() {
window.close();
// In browsers like Firefox window.close is not supported:
if (savedSuccessfullyTimeout !== null)
window.clearTimeout(savedSuccessfullyTimeout);
document.getElementById('save-indicator').innerText =
'✓ ' + chrome.i18n.getMessage('options_saved');
savedSuccessfullyTimeout = window.setTimeout(_ => {
document.getElementById('save-indicator').innerText = '';
}, 3699);
});
}
function i18n() {
document.querySelectorAll('[data-i18n]')
.forEach(
el => el.innerHTML = chrome.i18n.getMessage(
'options_' + el.getAttribute('data-i18n')));
}
function thread() {
if (document.querySelector('#thread').checked &&
document.querySelector('#threadall').checked) {
document.querySelector('#' + (this.id == 'thread' ? 'threadall' : 'thread'))
.checked = false;
}
}
window.addEventListener('load', function() {
i18n();
chrome.storage.sync.get(null, function(items) {
items = cleanUpOptions(items);
Object.keys(defaultOptions).forEach(function(opt) {
if (items[opt] === true && !deprecatedOptions.includes(opt)) {
document.querySelector('#' + opt).checked = true;
}
});
['thread', 'threadall'].forEach(
el => document.querySelector('#' + el).addEventListener(
'change', thread));
document.querySelector('#save').addEventListener('click', save);
});
});