App Manager: reduce memory usage

master
Ben Whittaker 2020-06-13 16:29:17 -04:00
parent 1658b5f035
commit 3404d244b6
3 changed files with 16 additions and 16 deletions

View File

@ -403,7 +403,7 @@
{ "id": "files", { "id": "files",
"name": "App Manager", "name": "App Manager",
"icon": "files.png", "icon": "files.png",
"version":"0.05", "version":"0.06",
"description": "Show currently installed apps, free space, and allow their deletion from the watch", "description": "Show currently installed apps, free space, and allow their deletion from the watch",
"tags": "tool,system,files", "tags": "tool,system,files",
"storage": [ "storage": [

View File

@ -2,3 +2,4 @@
0.03: Add support for data files 0.03: Add support for data files
0.04: Add functionality to sort apps manually or alphabetically ascending/descending. 0.04: Add functionality to sort apps manually or alphabetically ascending/descending.
0.05: Tweaks to help with memory usage 0.05: Tweaks to help with memory usage
0.06: Reduce memory usage

View File

@ -45,13 +45,13 @@ function globToRegex(pattern) {
return new RegExp('^'+regex+'$'); return new RegExp('^'+regex+'$');
} }
function eraseFiles(app) { function eraseFiles(info) {
app.files.split(",").forEach(f=>store.erase(f)); info.files.split(",").forEach(f=>store.erase(f));
} }
function eraseData(app) { function eraseData(info) {
if(!app.data) return; if(!info.data) return;
const d=app.data.split(';'), const d=info.data.split(';'),
files=d[0].split(','), files=d[0].split(','),
sFiles=(d[1]||'').split(','); sFiles=(d[1]||'').split(',');
let erase = f=>store.erase(f); let erase = f=>store.erase(f);
@ -68,8 +68,9 @@ function eraseData(app) {
} }
function eraseApp(app, files,data) { function eraseApp(app, files,data) {
E.showMessage('Erasing\n' + app.name + '...'); E.showMessage('Erasing\n' + app.name + '...');
if (files) eraseFiles(app); var info = store.readJSON(app.id + ".info", 1)||{};
if (data) eraseData(app); if (files) eraseFiles(info);
if (data) eraseData(info);
} }
function eraseOne(app, files,data){ function eraseOne(app, files,data){
E.showPrompt('Erase\n'+app.name+'?').then((v) => { E.showPrompt('Erase\n'+app.name+'?').then((v) => {
@ -86,8 +87,7 @@ function eraseAll(apps, files,data) {
E.showPrompt('Erase all?').then((v) => { E.showPrompt('Erase all?').then((v) => {
if (v) { if (v) {
Bangle.buzz(100, 1); Bangle.buzz(100, 1);
for(var n = 0; n<apps.length; n++) apps.forEach(app => eraseApp(app, files, data));
eraseApp(apps[n], files,data);
} }
showApps(); showApps();
}); });
@ -100,7 +100,7 @@ function showAppMenu(app) {
}, },
'< Back': () => showApps(), '< Back': () => showApps(),
}; };
if (app.data) { if (app.hasData) {
appmenu['Erase Completely'] = () => eraseOne(app, true, true); appmenu['Erase Completely'] = () => eraseOne(app, true, true);
appmenu['Erase App,Keep Data'] = () => eraseOne(app, true, false); appmenu['Erase App,Keep Data'] = () => eraseOne(app, true, false);
appmenu['Only Erase Data'] = () => eraseOne(app, false, true); appmenu['Only Erase Data'] = () => eraseOne(app, false, true);
@ -120,11 +120,10 @@ function showApps() {
var list = store.list(/\.info$/).filter((a)=> { var list = store.list(/\.info$/).filter((a)=> {
return a !== 'setting.info'; return a !== 'setting.info';
}).sort().map((app) => { }).map((a)=> {
var ret = store.readJSON(app,1)||{}; let app = store.readJSON(a, 1) || {};
ret[''] = app; return {id: app.id, name: app.name, hasData: !!app.data};
return ret; }).sort(sortHelper());;
});
if (list.length > 0) { if (list.length > 0) {
list.reduce((menu, app) => { list.reduce((menu, app) => {