diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-05-30 11:24:34 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-30 11:24:34 -0400 |
commit | f22807861392a4fcada66f19784b63d66eace2dc (patch) | |
tree | 6ed8d01e6a247fc7685711afe147aab638d4db43 /ext/bg/js/settings | |
parent | 789da0206b0a452605b49e9f72c4b294088b8046 (diff) |
SettingsController API update (#579)
* Include optionsContext as part of optionsChanged event
* Add get/modify functions
Diffstat (limited to 'ext/bg/js/settings')
-rw-r--r-- | ext/bg/js/settings/settings-controller.js | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/ext/bg/js/settings/settings-controller.js b/ext/bg/js/settings/settings-controller.js index 9f903f48..0d7abaa9 100644 --- a/ext/bg/js/settings/settings-controller.js +++ b/ext/bg/js/settings/settings-controller.js @@ -70,6 +70,30 @@ class SettingsController extends EventDispatcher { await this.save(); } + async getGlobalSettings(targets) { + return await this._getSettings(targets, {scope: 'global'}); + } + + async getProfileSettings(targets) { + return await this._getSettings(targets, {scope: 'profile', optionsContext: this.getOptionsContext()}); + } + + async modifyGlobalSettings(targets) { + return await this._modifySettings(targets, {scope: 'global'}); + } + + async modifyProfileSettings(targets) { + return await this._modifySettings(targets, {scope: 'profile', optionsContext: this.getOptionsContext()}); + } + + async setGlobalSetting(path, value) { + return await this.modifyGlobalSettings([{action: 'set', path, value}]); + } + + async setProfileSetting(path, value) { + return await this.modifyProfileSettings([{action: 'set', path, value}]); + } + getOptionsContext() { return {index: this._profileIndex}; } @@ -82,7 +106,18 @@ class SettingsController extends EventDispatcher { } async _onOptionsUpdatedInternal() { + const optionsContext = this.getOptionsContext(); const options = await this.getOptions(); - this.trigger('optionsChanged', {options}); + this.trigger('optionsChanged', {options, optionsContext}); + } + + async _getSettings(targets, extraFields) { + targets = targets.map((target) => Object.assign({}, target, extraFields)); + return await api.getSettings(targets); + } + + async _modifySettings(targets, extraFields) { + targets = targets.map((target) => Object.assign({}, target, extraFields)); + return await api.modifySettings(targets, this._source); } } |