diff --git a/apps/fastload/ChangeLog b/apps/fastload/ChangeLog index 4e68ab2c7..053799a9f 100644 --- a/apps/fastload/ChangeLog +++ b/apps/fastload/ChangeLog @@ -2,3 +2,4 @@ 0.02: Allow redirection of loads to the launcher 0.03: Allow hiding the fastloading info screen 0.04: (WIP) Allow use of app history when going back (`load()` or `Bangle.load()` calls without specified app). +0.05: Check for changes in setting.js and force real reload if needed diff --git a/apps/fastload/README.md b/apps/fastload/README.md index be4175f55..d82e13461 100644 --- a/apps/fastload/README.md +++ b/apps/fastload/README.md @@ -12,6 +12,7 @@ This allows fast loading of all apps with two conditions: * If Quick Launch is installed it can be excluded from app history * Allows to redirect all loads usually loading the clock to the launcher instead * The "Fastloading..." screen can be switched off +* Enable checking `setting.json` and force a complete load on changes ## App history diff --git a/apps/fastload/boot.js b/apps/fastload/boot.js index c7fc2fd86..4ac8b97e9 100644 --- a/apps/fastload/boot.js +++ b/apps/fastload/boot.js @@ -19,15 +19,23 @@ let loadingScreen = function(){ let cache = s.readJSON("fastload.cache") || {}; -let checkApp = function(n){ +const SYS_SETTINGS="setting.json"; + +let appFastloadPossible = function(n){ + if(SETTINGS.detectSettingsChange && (!cache[SYS_SETTINGS] || s.hash(SYS_SETTINGS) != cache[SYS_SETTINGS])){ + cache[SYS_SETTINGS] = s.hash(SYS_SETTINGS); + s.writeJSON("fastload.cache", cache); + return false; + } + // no widgets, no problem if (!global.WIDGETS) return true; let app = s.read(n); - if (cache[n] && E.CRC32(app) == cache[n].crc) + if (cache[n] && s.hash(app) == cache[n].hash) return cache[n].fast; cache[n] = {}; cache[n].fast = app.includes("Bangle.loadWidgets"); - cache[n].crc = E.CRC32(app); + cache[n].hash = s.hash(app); s.writeJSON("fastload.cache", cache); return cache[n].fast; }; @@ -39,7 +47,7 @@ let slowload = function(n){ }; let fastload = function(n){ - if (!n || checkApp(n)){ + if (!n || appFastloadPossible(n)){ // Bangle.load can call load, to prevent recursion this must be the system load global.load = slowload; Bangle.load(n); diff --git a/apps/fastload/metadata.json b/apps/fastload/metadata.json index 954a7d8b4..abd5b3ed5 100644 --- a/apps/fastload/metadata.json +++ b/apps/fastload/metadata.json @@ -1,7 +1,7 @@ { "id": "fastload", "name": "Fastload Utils", "shortName" : "Fastload Utils", - "version": "0.04", + "version": "0.05", "icon": "icon.png", "description": "Enable experimental fastloading for more apps", "type":"bootloader", diff --git a/apps/fastload/settings.js b/apps/fastload/settings.js index 66c990df1..15c135fe4 100644 --- a/apps/fastload/settings.js +++ b/apps/fastload/settings.js @@ -59,6 +59,13 @@ } }; + mainmenu['Detect settings changes'] = { + value: !!settings.detectSettingsChange, + onchange: v => { + writeSettings("detectSettingsChange",v); + } + }; + return mainmenu; }