diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-12-09 21:07:18 -0500 |
---|---|---|
committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-12-13 23:11:56 -0500 |
commit | 6a1cfbaad62bc60e8415821039e028432d64b549 (patch) | |
tree | db0ab67790fe00a7c541e0afe03f7a0498336a3d /ext/bg/js/api.js | |
parent | d6fe5c3e46bfba996e42f94b4303f1106a7fcdab (diff) |
Move apiOptionsSet implementation into Backend
Diffstat (limited to 'ext/bg/js/api.js')
-rw-r--r-- | ext/bg/js/api.js | 40 |
1 files changed, 2 insertions, 38 deletions
diff --git a/ext/bg/js/api.js b/ext/bg/js/api.js index 95ac782e..4c55c6e3 100644 --- a/ext/bg/js/api.js +++ b/ext/bg/js/api.js @@ -21,44 +21,8 @@ function apiOptionsGet(optionsContext) { return utilBackend()._onApiOptionsGet({optionsContext}); } -async function apiOptionsSet(changedOptions, optionsContext, source) { - const options = await apiOptionsGet(optionsContext); - - function getValuePaths(obj) { - const valuePaths = []; - const nodes = [{obj, path: []}]; - while (nodes.length > 0) { - const node = nodes.pop(); - for (const key of Object.keys(node.obj)) { - const path = node.path.concat(key); - const obj = node.obj[key]; - if (obj !== null && typeof obj === 'object') { - nodes.unshift({obj, path}); - } else { - valuePaths.push([obj, path]); - } - } - } - return valuePaths; - } - - function modifyOption(path, value, options) { - let pivot = options; - for (const key of path.slice(0, -1)) { - if (!hasOwn(pivot, key)) { - return false; - } - pivot = pivot[key]; - } - pivot[path[path.length - 1]] = value; - return true; - } - - for (const [value, path] of getValuePaths(changedOptions)) { - modifyOption(path, value, options); - } - - await apiOptionsSave(source); +function apiOptionsSet(changedOptions, optionsContext, source) { + return utilBackend()._onApiOptionsSet({changedOptions, optionsContext, source}); } function apiOptionsGetFull() { |