fastload - Allow redirecting to launcher for back function of setUI

pull/2320/head
Martin Boonk 2022-11-22 19:05:12 +01:00
parent 13bbf669b4
commit dc87171dcc
1 changed files with 53 additions and 2 deletions

View File

@ -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);
}