BangleApps/apps/files/files.js

103 lines
2.0 KiB
JavaScript

const storage = require('Storage');
const boolFormat = (v) => v ? "On" : "Off";
let m;
function showMainMenu() {
const mainmenu = {
'': {
'title': 'App Manager',
},
'Free': {
value: undefined,
format: (v) => {
return storage.getFree();
},
onchange: () => {}
},
'Compact': () => {
E.showMessage('Compacting...');
try {
storage.compact();
} catch (e) {
}
m = showMainMenu();
},
'Apps': ()=> m = showApps(),
'< Back': ()=> {load();}
};
return E.showMenu(mainmenu);
}
function eraseApp(app) {
E.showMessage('Erasing ' + app.name + '...');
storage.erase(app['']);
storage.erase(app.icon);
storage.erase(app.src);
}
function showAppMenu(app) {
const appmenu = {
'': {
'title': app.name,
},
'< Back': () => m = showApps(),
'Erase': () => {
E.showPrompt('Erase ' + app.name + '?').then((v) => {
if (v) {
Bangle.buzz(100, 1);
eraseApp(app);
m = showApps();
} else {
m = showAppMenu(app)
}
});
}
};
return E.showMenu(appmenu);
}
function showApps() {
const appsmenu = {
'': {
'title': 'Apps',
},
'< Back': () => m = showMainMenu(),
};
var list = storage.list().filter((a)=> {
return a[0]=='+' && a !== '+setting';
}).sort().map((app) => {
var ret = storage.readJSON(app);
ret[''] = app;
return ret;
});
if (list.length > 0) {
list.reduce((menu, app) => {
menu[app.name] = () => m = showAppMenu(app);
return menu;
}, appsmenu);
appsmenu['Erase All'] = () => {
E.showPrompt('Erase all?').then((v) => {
if (v) {
Bangle.buzz(100, 1);
for (var n = 0; n < list.length; n++)
eraseApp(list[n]);
}
m = showApps();
});
};
} else {
appsmenu['...No Apps...'] = {
value: undefined,
format: ()=> '',
onchange: ()=> {}
};
}
return E.showMenu(appsmenu);
}
m = showMainMenu();