From 3404d244b66735cecfeaa91ea8d6be4289744d1b Mon Sep 17 00:00:00 2001 From: Ben Whittaker Date: Sat, 13 Jun 2020 16:29:17 -0400 Subject: [PATCH] App Manager: reduce memory usage --- apps.json | 2 +- apps/files/ChangeLog | 1 + apps/files/files.js | 29 ++++++++++++++--------------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/apps.json b/apps.json index a09aa6c6b..2cddea678 100644 --- a/apps.json +++ b/apps.json @@ -403,7 +403,7 @@ { "id": "files", "name": "App Manager", "icon": "files.png", - "version":"0.05", + "version":"0.06", "description": "Show currently installed apps, free space, and allow their deletion from the watch", "tags": "tool,system,files", "storage": [ diff --git a/apps/files/ChangeLog b/apps/files/ChangeLog index f2e5f64f5..b4037a733 100644 --- a/apps/files/ChangeLog +++ b/apps/files/ChangeLog @@ -2,3 +2,4 @@ 0.03: Add support for data files 0.04: Add functionality to sort apps manually or alphabetically ascending/descending. 0.05: Tweaks to help with memory usage +0.06: Reduce memory usage \ No newline at end of file diff --git a/apps/files/files.js b/apps/files/files.js index ab259d6df..e240a8e68 100644 --- a/apps/files/files.js +++ b/apps/files/files.js @@ -45,13 +45,13 @@ function globToRegex(pattern) { return new RegExp('^'+regex+'$'); } -function eraseFiles(app) { - app.files.split(",").forEach(f=>store.erase(f)); +function eraseFiles(info) { + info.files.split(",").forEach(f=>store.erase(f)); } -function eraseData(app) { - if(!app.data) return; - const d=app.data.split(';'), +function eraseData(info) { + if(!info.data) return; + const d=info.data.split(';'), files=d[0].split(','), sFiles=(d[1]||'').split(','); let erase = f=>store.erase(f); @@ -68,8 +68,9 @@ function eraseData(app) { } function eraseApp(app, files,data) { E.showMessage('Erasing\n' + app.name + '...'); - if (files) eraseFiles(app); - if (data) eraseData(app); + var info = store.readJSON(app.id + ".info", 1)||{}; + if (files) eraseFiles(info); + if (data) eraseData(info); } function eraseOne(app, files,data){ E.showPrompt('Erase\n'+app.name+'?').then((v) => { @@ -86,8 +87,7 @@ function eraseAll(apps, files,data) { E.showPrompt('Erase all?').then((v) => { if (v) { Bangle.buzz(100, 1); - for(var n = 0; n eraseApp(app, files, data)); } showApps(); }); @@ -100,7 +100,7 @@ function showAppMenu(app) { }, '< Back': () => showApps(), }; - if (app.data) { + if (app.hasData) { appmenu['Erase Completely'] = () => eraseOne(app, true, true); appmenu['Erase App,Keep Data'] = () => eraseOne(app, true, false); appmenu['Only Erase Data'] = () => eraseOne(app, false, true); @@ -120,11 +120,10 @@ function showApps() { var list = store.list(/\.info$/).filter((a)=> { return a !== 'setting.info'; - }).sort().map((app) => { - var ret = store.readJSON(app,1)||{}; - ret[''] = app; - return ret; - }); + }).map((a)=> { + let app = store.readJSON(a, 1) || {}; + return {id: app.id, name: app.name, hasData: !!app.data}; + }).sort(sortHelper());; if (list.length > 0) { list.reduce((menu, app) => {