BangleApps/apps/coin_info/settings.js

53 lines
1.5 KiB
JavaScript

(function(back) {
const SETTINGS_FILE = "coin_info.settings.json";
const storage = require('Storage');
// Default settings with sorted tokens and load settings
let settings = Object.assign({
// TODO: MZw - retrieve from upload-storage
tokens: ['BTC', 'ETH', 'STORJ'],
tokenSelected: ['BTC'],
getRateMin: 60
}, storage.readJSON(SETTINGS_FILE, 1) || {});
function save() {
storage.write(SETTINGS_FILE, settings);
}
function createMenu() {
const menu = {
'': { 'title': 'Crypto-Coin Info' },
'< Back': () => Bangle.showClock()
};
// Dynamic checkbox creation
settings.tokens.sort().forEach(token => {
menu[token] = {
value: settings.tokenSelected.includes(token),
onchange: v => {
if (v) {
settings.tokenSelected.push(token);
} else {
settings.tokenSelected = settings.tokenSelected.filter(f => f !== token);
}
save();
}
};
});
// update time
menu['Refresh Rate (min)'] = {
value: settings.getRateMin,
min: 1,
max: 1440,
onchange: v => {
settings.getRateMin = v;
save();
}
};
return menu;
}
E.showMenu(createMenu());
})