From d444fe5d69e3d2e8c0a72d00d129551ed0cd1bae Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Thu, 20 Oct 2022 18:46:06 +0200 Subject: [PATCH] iconlaunch - Cache apps for faster start --- apps/iconlaunch/app.js | 46 +++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/apps/iconlaunch/app.js b/apps/iconlaunch/app.js index fd58176db..0f20efa67 100644 --- a/apps/iconlaunch/app.js +++ b/apps/iconlaunch/app.js @@ -5,34 +5,24 @@ Bangle.loadWidgets(); Bangle.drawWidgets(); } - var apps = s - .list(/\.info$/) - .map((app) => { - var a = s.readJSON(app, 1); - return ( - a && { - name: a.name, - type: a.type, - icon: a.icon, - sortorder: a.sortorder, - src: a.src, - } - ); - }) - .filter( - (app) => - app && - (app.type == "app" || - (app.type == "clock" && settings.showClocks) || - !app.type) - ); - apps.sort((a, b) => { - var n = (0 | a.sortorder) - (0 | b.sortorder); - if (n) return n; - if (a.name < b.name) return -1; - if (a.name > b.name) return 1; - return 0; - }); + let launchCache = s.readJSON("launch.cache.json", true)||{}; + let launchHash = require("Storage").hash(/\.info/); + if (launchCache.hash!=launchHash) { + launchCache = { + hash : launchHash, + apps : s.list(/\.info$/) + .map(app=>{var a=s.readJSON(app,1);return a&&{name:a.name,type:a.type,icon:a.icon,sortorder:a.sortorder,src:a.src};}) + .filter(app=>app && (app.type=="app" || (app.type=="clock" && settings.showClocks) || !app.type)) + .sort((a,b)=>{ + var n=(0|a.sortorder)-(0|b.sortorder); + if (n) return n; // do sortorder first + if (a.nameb.name) return 1; + return 0; + }) }; + s.writeJSON("launch.cache.json", launchCache); + } + let apps = launchCache.apps; apps.forEach((app) => { if (app.icon) app.icon = s.read(app.icon); });