mirror of https://github.com/espruino/BangleApps
103 lines
2.0 KiB
JavaScript
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 Bangle.menu(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 Bangle.menu(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 Bangle.menu(appsmenu);
|
||
|
}
|
||
|
|
||
|
m = showMainMenu();
|