Cleanup
parent
e522bdb1c2
commit
a2b59b5765
|
|
@ -1,54 +1,51 @@
|
|||
(function(back) {
|
||||
const SETTINGS_FILE = "coin_info.settings.json";
|
||||
|
||||
// Initialize with default settings...
|
||||
// TODO: retrieve from upload-storage
|
||||
const token_options = ['bitcoin', 'ethereum', 'tether'];
|
||||
let settings = {'tokens':token_options, 'tokenSelected':['bitcoin'], 'getRateMin':60}
|
||||
// ...and overwrite them with any saved values
|
||||
// This way saved values are preserved if a new version adds more settings
|
||||
const storage = require('Storage');
|
||||
settings = Object.assign(settings, storage.readJSON(SETTINGS_FILE, 1)||{});
|
||||
|
||||
// Default settings with sorted tokens
|
||||
let settings = Object.assign({
|
||||
// TODO: MZw - retrieve from upload-storage
|
||||
tokens: ['bitcoin', 'ethereum', 'tether'],
|
||||
tokenSelected: ['bitcoin'],
|
||||
getRateMin: 60
|
||||
}, storage.readJSON(SETTINGS_FILE, 1) || {});
|
||||
|
||||
function save() {
|
||||
storage.write(SETTINGS_FILE, settings);
|
||||
}
|
||||
|
||||
function createMultiSelectMenu() {
|
||||
function createMenu() {
|
||||
const menu = {
|
||||
'': { 'title': 'Crpyto-Coin Info' },
|
||||
'': { 'title': 'Crypto-Coin Info' },
|
||||
'< Back': () => Bangle.showClock()
|
||||
};
|
||||
|
||||
// Dynamic checkbox creation
|
||||
settings.tokens.forEach((token, index) => {
|
||||
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);
|
||||
}
|
||||
settings.tokenSelected = v
|
||||
? [...new Set([...settings.tokenSelected, token])] // Prevent duplicates
|
||||
: settings.tokenSelected.filter(t => t !== token);
|
||||
save();
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
// update time
|
||||
menu['Req. Rate in Min'] = {
|
||||
value: !!settings.getRateMin,
|
||||
menu['Refresh Rate (min)'] = {
|
||||
value: settings.getRateMin,
|
||||
min: 1,
|
||||
max: 1440,
|
||||
onchange: v => {
|
||||
settings.getRateMin = v;
|
||||
save();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
E.showMenu(menu);
|
||||
return menu;
|
||||
}
|
||||
|
||||
Bangle.setUI({
|
||||
mode: 'custom',
|
||||
btn: createMultiSelectMenu
|
||||
});
|
||||
E.showMenu(createMenu());
|
||||
})
|
||||
Loading…
Reference in New Issue