mirror of https://github.com/espruino/BangleApps
fastload - Allow redirecting to launcher for back function of setUI
parent
13bbf669b4
commit
dc87171dcc
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
const SETTINGS = require("Storage").readJSON("fastload.json") || {};
|
||||
|
||||
let loadingScreen = function(){
|
||||
g.reset();
|
||||
|
||||
|
@ -14,9 +16,58 @@ let loadingScreen = function(){
|
|||
g.flip(true);
|
||||
};
|
||||
|
||||
// only needed to show "Fastloading..." on starting the launcher
|
||||
let cache = require("Storage").readJSON("fastload.cache") || {};
|
||||
|
||||
function checkApp(n){
|
||||
print("checking", n);
|
||||
// no widgets, no problem
|
||||
if (!global.WIDGETS) return true;
|
||||
let app = require("Storage").read(n);
|
||||
if (cache[n] && E.CRC32(app) == cache[n].crc)
|
||||
return cache[n].fast
|
||||
cache[n] = {};
|
||||
cache[n].fast = app.includes("Bangle.loadWidgets");
|
||||
cache[n].crc = E.CRC32(app);
|
||||
require("Storage").writeJSON("fastload.cache", cache);
|
||||
print("updated cache", cache[n]);
|
||||
return cache[n].fast;
|
||||
}
|
||||
|
||||
global._load = load;
|
||||
|
||||
function slowload(n){
|
||||
print("slowload", n);
|
||||
global._load(n);
|
||||
}
|
||||
|
||||
function fastload(n){
|
||||
print("fastload", n)
|
||||
if (!n || checkApp(n)){
|
||||
print("actually try fastloading using Bangle.load");
|
||||
// Bangle.load can call load, to prevent recursion this must be the system load
|
||||
global.load = slowload;
|
||||
Bangle.load(n);
|
||||
// if fastloading worked, we need to set load back to this method
|
||||
global.load = fastload;
|
||||
}
|
||||
else
|
||||
slowload(n);
|
||||
};
|
||||
global.load = fastload;
|
||||
|
||||
Bangle.load = (o => (name) => {
|
||||
print("Bangle.load", name);
|
||||
if (Bangle.uiRemove) loadingScreen();
|
||||
setTimeout(o,0,name);
|
||||
if (SETTINGS.autoloadLauncher && !name){
|
||||
print("redirect to launcher");
|
||||
let orig = Bangle.load;
|
||||
Bangle.load = (n)=>{
|
||||
Bangle.load = orig;
|
||||
fastload(n);
|
||||
}
|
||||
Bangle.showLauncher();
|
||||
Bangle.load = orig;
|
||||
} else
|
||||
o(name);
|
||||
})(Bangle.load);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue