From be521832115f42c58fc263cb6fb60a41d120bfd0 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 22 Mar 2021 14:30:03 +0100 Subject: [PATCH] Remove some *indirect* loops in the `BasePreferences.getAll`-method In the `getAll`-method, we can have just one *explicit* loop rather than two indirect ones via the old `Object.assign`-call. Also, changes the `get`-method to be slightly more compact (while keeping the logic intact). --- web/preferences.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/web/preferences.js b/web/preferences.js index 6e8b9b048..ea1ffd483 100644 --- a/web/preferences.js +++ b/web/preferences.js @@ -125,18 +125,13 @@ class BasePreferences { */ async get(name) { await this._initializedPromise; - const defaultValue = this.defaults[name]; + const defaultValue = this.defaults[name], + prefValue = this.prefs[name]; if (defaultValue === undefined) { throw new Error(`Get preference: "${name}" is undefined.`); - } else { - const prefValue = this.prefs[name]; - - if (prefValue !== undefined) { - return prefValue; - } } - return defaultValue; + return prefValue !== undefined ? prefValue : defaultValue; } /** @@ -146,7 +141,13 @@ class BasePreferences { */ async getAll() { await this._initializedPromise; - return Object.assign(Object.create(null), this.defaults, this.prefs); + const obj = Object.create(null); + + for (const name in this.defaults) { + const prefValue = this.prefs[name]; + obj[name] = prefValue !== undefined ? prefValue : this.defaults[name]; + } + return obj; } }