we use 'true' and 'false' strings as boolean T_T

fixup for b56dacb
This commit is contained in:
tophf 2020-11-04 12:50:24 +03:00
parent 97ad0753e0
commit 31558d5071

View File

@ -140,18 +140,19 @@ window.INJECTED !== 1 && (() => {
get(key) {
return isKnown(key) && values[key];
},
set(key, value, isSynced) {
set(key, val, isSynced) {
if (!isKnown(key)) return;
const oldValue = values[key];
const type = typeof defaults[key];
if (type !== typeof value) {
if (type === 'string') value = String(value);
if (type === 'number') value = Number(value) || 0;
if (type === 'boolean') value = Boolean(value);
if (type !== typeof val) {
if (type === 'string') val = String(val);
if (type === 'number') val = Number(val) || 0;
if (type === 'boolean') val = val === 'true' || val !== 'false' && Boolean(val);
// 'true' and 'false' strings are used by manage.html in `.invert` elements
}
if (value !== oldValue && !simpleDeepEqual(value, oldValue)) {
values[key] = value;
emitChange(key, value, isSynced);
if (val !== oldValue && !simpleDeepEqual(val, oldValue)) {
values[key] = val;
emitChange(key, val, isSynced);
}
},
reset(key) {