From 3baa465f01e5df16ff15311ec91c7896eabd345d Mon Sep 17 00:00:00 2001 From: Richard de Boer Date: Wed, 1 Dec 2021 19:34:52 +0100 Subject: [PATCH] remove Settings module Better not to have this at all than to have a library that you can't actually use in widgets/boot/settings code --- README.md | 12 ++++-- modules/Settings.js | 101 -------------------------------------------- 2 files changed, 8 insertions(+), 105 deletions(-) delete mode 100644 modules/Settings.js diff --git a/README.md b/README.md index 20ae8afb2..8e186cf79 100644 --- a/README.md +++ b/README.md @@ -384,14 +384,18 @@ Example `settings.js` ```js // make sure to enclose the function in parentheses (function(back) { - function get(key, def) { return require('Settings').get('myappid', key, def); } - function set(key, value) { require('Settings').set('myappid', key, value); } + let settings = require('Storage').readJSON('myappid.json',1)||{}; + if (typeof settings.monkeys !== "number") settings.monkeys = 12; // default value + function save(key, value) { + settings[key] = value; + require('Storage').write('myappid.json', settings); + } const appMenu = { '': {'title': 'App Settings'}, '< Back': back, 'Monkeys': { - value: get('monkeys', 12), - onchange: (m) => set('monkeys', m) + value: settings.monkeys, + onchange: (m) => {save('monkeys', m)} } }; E.showMenu(appMenu) diff --git a/modules/Settings.js b/modules/Settings.js deleted file mode 100644 index 0828b4655..000000000 --- a/modules/Settings.js +++ /dev/null @@ -1,101 +0,0 @@ -/* -- Read/write app settings, stored in .json -- Read/write global settings (stored in setting.json) - -Usage: -``` -// read a single app setting -value = require('Settings').get(appid, key, default); -// omit key to read all app settings -value = require('Settings').get(appid); -// write a single app setting -require('Settings').set(appid, key, value) -// omit key and pass an object as values to overwrite all settings -require('Settings').set(appid, values) - -// read Bangle settings by passing the Bangle object instead of an app name -value = require('Settings').get(Bangle, key, default); -// read all global settings -values = require('Settings').get(Bangle); -// write a global setting -require('Settings').set(Bangle, key, value) -``` - -For example: -``` -require('Settings').set('test', 'foo', 123); // writes to 'test.json' -require('Settings').set('test', 'bar', 456); // updates 'test.json' -// 'test.json' now contains {baz:123,bam:456} -baz = require('Settings').get('test', 'foo'); // baz = 123 -def = require('Settings').get('test', 'jkl', 789); // def = 789 -all = require('Settings').get('test'); // all = {foo: 123, bar: 456} -baz = require('Settings').get('test', 'baz'); // baz = undefined - -// read global setting -vibrate = require('Settings').get(Bangle, 'vibrate', true); - -// Hint: if your app reads multiple settings, you can create a helper function: -function s(key, def) { return require('Settings').get('myapp', key, def); } -var foo = s('foo setting', 'default value'), bar = s('bar setting'); -``` - -*/ - -/** - * Read setting value from file - * - * @param {string} file Settings file - * @param {string} key Setting to get, omit to get all settings as object - * @param {*} def Default value - * @return {*} Setting value (or default if not found) - */ -function get(file, key, def) { - var s = require("Storage").readJSON(file); - if (def===undefined && ["object", "undefined"].includes(typeof key)) { - // get(file) or get(file, def): get all settings - return (s!==undefined) ? s : key; - } - return ((typeof s==="object") && (key in s)) ? s[key] : def; -} - -/** - * Write setting value to file - * - * @param {string} file Settings file - * @param {string} key Setting to change, omit to replace all settings - * @param {*} value Value to store - */ -function set(file, key, value) { - if (value===undefined && typeof key==="object") { - // set(file, value): overwrite settings completely - require("Storage").writeJSON(file, key); - return; - } - var s = require("Storage").readJSON(file, 1); - if (typeof s!=="object") s = {}; - s[key] = value; - require("Storage").write(file, s); -} - -/** - * Read setting value - * - * @param {string|object} app App name or Bangle - * @param {string} key Setting to get, omit to get all settings as object - * @param {*} def Default value - * @return {*} Setting value (or default if not found) - */ -exports.get = function(app, key, def) { - return get((app===Bangle) ? 'setting.json' : app+".json", key, def); -}; - -/** - * Write setting value - * - * @param {string|object} app App name or Bangle - * @param {string} key Setting to change, omit to replace all settings - * @param {*} val Value to store - */ -exports.set = function(app, key, val) { - set((app===Bangle) ? 'setting.json' : app+".json", key, val); -};