53 lines
1.5 KiB
JavaScript
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());
|
|
}) |