diff --git a/apps/powermanager/ChangeLog b/apps/powermanager/ChangeLog index ee31195b2..d1c288f97 100644 --- a/apps/powermanager/ChangeLog +++ b/apps/powermanager/ChangeLog @@ -8,4 +8,5 @@ Add widget for live monitoring of power use 0.07: Convert Yes/No On/Off in settings to checkboxes 0.08: Fix the wrapping of intervals/timeouts with parameters - Fix the widget drawing if widgets are hidden and Bangle.setLCDBrightness is called \ No newline at end of file + Fix the widget drawing if widgets are hidden and Bangle.setLCDBrightness is called +0.09: Cache the app-launch info \ No newline at end of file diff --git a/apps/powermanager/metadata.json b/apps/powermanager/metadata.json index 5487c2278..92c471fd6 100644 --- a/apps/powermanager/metadata.json +++ b/apps/powermanager/metadata.json @@ -2,7 +2,7 @@ "id": "powermanager", "name": "Power Manager", "shortName": "Power Manager", - "version": "0.08", + "version": "0.09", "description": "Allow configuration of warnings and thresholds for battery charging and display.", "icon": "app.png", "type": "bootloader", diff --git a/apps/ratchet_launch/app.js b/apps/ratchet_launch/app.js index 11018080a..156106894 100644 --- a/apps/ratchet_launch/app.js +++ b/apps/ratchet_launch/app.js @@ -9,27 +9,38 @@ var blankImage = Graphics.createImage(` `); var rowHeight = g.getHeight()/3; // Load apps list -var apps = Storage.list(/\.info$/).map(app=>{ - var a=Storage.readJSON(app,1); - return a&&{ - name:a.name, - type:a.type, - icon:a.icon ? Storage.read(a.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; // do sortorder first - if (a.nameb.name) return 1; - return 0; -}); +var apps; + +var launchCache = s.readJSON("launch.cache.json", true)||{}; +var launchHash = require("Storage").hash(/\.info/); +if (launchCache.hash==launchHash) { + apps = launchCache.apps; +} else { + apps = Storage.list(/\.info$/).map(app=>{ + var a=Storage.readJSON(app,1); + return a&&{ + name:a.name, + type:a.type, + icon:a.icon ? Storage.read(a.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; // do sortorder first + if (a.nameb.name) return 1; + return 0; + }); + + launchCache = { apps, hash: launchHash }; + s.writeJSON("launch.cache.json", launchCache); +} // Uncomment for testing in the emulator without apps: // apps = [