summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-05-30 11:24:34 -0400
committerGitHub <noreply@github.com>2020-05-30 11:24:34 -0400
commitf22807861392a4fcada66f19784b63d66eace2dc (patch)
tree6ed8d01e6a247fc7685711afe147aab638d4db43 /ext
parent789da0206b0a452605b49e9f72c4b294088b8046 (diff)
SettingsController API update (#579)
* Include optionsContext as part of optionsChanged event * Add get/modify functions
Diffstat (limited to 'ext')
-rw-r--r--ext/bg/js/settings/settings-controller.js37
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);
}
}