Skip to content

Commit a91c675

Browse files
committed
preferences util: cut back on storageArea.set calls
set all unset preferences at once to avoid unnecessary repeated triggering of storage.onChanged
1 parent 6afc6e0 commit a91c675

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/util/preferences.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,25 @@
99
const scriptManifest = await scriptManifestFile.json();
1010

1111
const { preferences = {} } = scriptManifest;
12+
const unsetPreferences = {};
1213
const preferenceValues = {};
1314

1415
for (const [key, preference] of Object.entries(preferences)) {
1516
const storageKey = `${scriptName}.preferences.${key}`;
1617
const { [storageKey]: savedPreference } = await browser.storage.local.get(storageKey);
1718

1819
if (savedPreference === undefined) {
19-
browser.storage.local.set({ [storageKey]: preference.default });
20+
Object.assign(unsetPreferences, { [storageKey]: preference.default });
2021
preferenceValues[key] = preference.default;
2122
} else {
2223
preferenceValues[key] = savedPreference;
2324
}
2425
}
2526

27+
if (Object.keys(unsetPreferences).length !== 0) {
28+
browser.storage.local.set(unsetPreferences);
29+
}
30+
2631
return preferenceValues;
2732
};
2833

0 commit comments

Comments
 (0)