fix js-error on older chromes in incognito mode;

window.localStorage was null, so trying to read would fail

seen on falkon 23.08.4 with qtwebengine 5.15.12 (fedora39)

might as well be paranoid about the other failure modes too
(sudden exceptions on reads and/or writes)
This commit is contained in:
ed 2024-01-24 02:24:27 +00:00
parent 64cac003d8
commit b32d65207b
9 changed files with 40 additions and 19 deletions

View file

@ -148,7 +148,8 @@
logues = {{ logues|tojson if sb_lg else "[]" }}, logues = {{ logues|tojson if sb_lg else "[]" }},
ls0 = {{ ls0|tojson }}; ls0 = {{ ls0|tojson }};
document.documentElement.className = localStorage.cpp_thm || dtheme; var STG = window.localStorage;
document.documentElement.className = (STG && STG.cpp_thm) || dtheme;
</script> </script>
<script src="{{ r }}/.cpr/util.js?_={{ ts }}"></script> <script src="{{ r }}/.cpr/util.js?_={{ ts }}"></script>
<script src="{{ r }}/.cpr/baguettebox.js?_={{ ts }}"></script> <script src="{{ r }}/.cpr/baguettebox.js?_={{ ts }}"></script>

View file

@ -3405,8 +3405,8 @@ function sortfiles(nodes) {
} }
catch (ex) { catch (ex) {
console.log("failed to apply sort config: " + ex); console.log("failed to apply sort config: " + ex);
console.log("resetting fsort " + sread('fsort')) console.log("resetting fsort " + sread('fsort'));
localStorage.removeItem('fsort'); sdrop('fsort');
} }
return nodes; return nodes;
} }

View file

@ -139,16 +139,15 @@ var md_opt = {
}; };
(function () { (function () {
var l = localStorage, var l = window.localStorage,
drk = l.light != 1, drk = (l && l.light) != 1,
btn = document.getElementById("lightswitch"), btn = document.getElementById("lightswitch"),
f = function (e) { f = function (e) {
if (e) { e.preventDefault(); drk = !drk; } if (e) { e.preventDefault(); drk = !drk; }
document.documentElement.className = drk? "z":"y"; document.documentElement.className = drk? "z":"y";
btn.innerHTML = "go " + (drk ? "light":"dark"); btn.innerHTML = "go " + (drk ? "light":"dark");
l.light = drk? 0:1; try { l.light = drk? 0:1; } catch (ex) { }
}; };
btn.onclick = f; btn.onclick = f;
f(); f();
})(); })();

View file

@ -933,7 +933,7 @@ var set_lno = (function () {
var keydown = function (ev) { var keydown = function (ev) {
if (!ev && window.event) { if (!ev && window.event) {
ev = window.event; ev = window.event;
if (localStorage.dev_fbw == 1) { if (dev_fbw == 1) {
toast.warn(10, 'hello from fallback code ;_;\ncheck console trace'); toast.warn(10, 'hello from fallback code ;_;\ncheck console trace');
console.error('using window.event'); console.error('using window.event');
} }

View file

@ -37,12 +37,12 @@ var md_opt = {
}; };
var lightswitch = (function () { var lightswitch = (function () {
var l = localStorage, var l = window.localStorage,
drk = l.light != 1, drk = (l && l.light) != 1,
f = function (e) { f = function (e) {
if (e) drk = !drk; if (e) drk = !drk;
document.documentElement.className = drk? "z":"y"; document.documentElement.className = drk? "z":"y";
l.light = drk? 0:1; try { l.light = drk? 0:1; } catch (ex) { }
}; };
f(); f();
return f; return f;

View file

@ -110,7 +110,8 @@ var SR = {{ r|tojson }},
lang="{{ lang }}", lang="{{ lang }}",
dfavico="{{ favico }}"; dfavico="{{ favico }}";
document.documentElement.className=localStorage.cpp_thm||"{{ this.args.theme }}"; var STG = window.localStorage;
document.documentElement.className = (STG && STG.cpp_thm) || "{{ this.args.theme }}";
</script> </script>
<script src="{{ r }}/.cpr/util.js?_={{ ts }}"></script> <script src="{{ r }}/.cpr/util.js?_={{ ts }}"></script>

View file

@ -238,7 +238,8 @@ var SR = {{ r|tojson }},
lang="{{ lang }}", lang="{{ lang }}",
dfavico="{{ favico }}"; dfavico="{{ favico }}";
document.documentElement.className=localStorage.cpp_thm||"{{ args.theme }}"; var STG = window.localStorage;
document.documentElement.className = (STG && STG.cpp_thm) || "{{ args.theme }}";
</script> </script>
<script src="{{ r }}/.cpr/util.js?_={{ ts }}"></script> <script src="{{ r }}/.cpr/util.js?_={{ ts }}"></script>

View file

@ -431,7 +431,7 @@ function U2pvis(act, btns, uc, st) {
if (sread('potato') === null) { if (sread('potato') === null) {
btn.click(); btn.click();
toast.inf(30, L.u_gotpot); toast.inf(30, L.u_gotpot);
localStorage.removeItem('potato'); sdrop('potato');
} }
u2f.appendChild(ode); u2f.appendChild(ode);
@ -2687,7 +2687,7 @@ function up2k_init(subtle) {
parallel_uploads = v; parallel_uploads = v;
if (v == u2j) if (v == u2j)
localStorage.removeItem('nthread'); sdrop('nthread');
else else
swrite('nthread', v); swrite('nthread', v);

View file

@ -12,6 +12,7 @@ if (window.CGV)
var wah = '', var wah = '',
STG = null,
NOAC = 'autocorrect="off" autocapitalize="off"', NOAC = 'autocorrect="off" autocapitalize="off"',
L, tt, treectl, thegrid, up2k, asmCrypto, hashwasm, vbar, marked, L, tt, treectl, thegrid, up2k, asmCrypto, hashwasm, vbar, marked,
T0 = Date.now(), T0 = Date.now(),
@ -40,6 +41,16 @@ if (!window.Notification || !Notification.permission)
if (!window.FormData) if (!window.FormData)
window.FormData = false; window.FormData = false;
try {
STG = window.localStorage;
STG.STG;
}
catch (ex) {
STG = null;
if ((ex + '').indexOf('sandbox') < 0)
console.log('no localStorage: ' + ex);
}
try { try {
CB = '?' + document.currentScript.src.split('?').pop(); CB = '?' + document.currentScript.src.split('?').pop();
@ -285,10 +296,11 @@ function anymod(e, shift_ok) {
} }
var dev_fbw = sread('dev_fbw');
function ev(e) { function ev(e) {
if (!e && window.event) { if (!e && window.event) {
e = window.event; e = window.event;
if (localStorage.dev_fbw == 1) { if (dev_fbw == 1) {
toast.warn(10, 'hello from fallback code ;_;\ncheck console trace'); toast.warn(10, 'hello from fallback code ;_;\ncheck console trace');
console.error('using window.event'); console.error('using window.event');
} }
@ -925,9 +937,16 @@ function jcp(obj) {
} }
function sdrop(key) {
try {
STG.removeItem(key);
}
catch (ex) { }
}
function sread(key, al) { function sread(key, al) {
try { try {
var ret = localStorage.getItem(key); var ret = STG.getItem(key);
return (!al || has(al, ret)) ? ret : null; return (!al || has(al, ret)) ? ret : null;
} }
catch (e) { catch (e) {
@ -938,9 +957,9 @@ function sread(key, al) {
function swrite(key, val) { function swrite(key, val) {
try { try {
if (val === undefined || val === null) if (val === undefined || val === null)
localStorage.removeItem(key); STG.removeItem(key);
else else
localStorage.setItem(key, val); STG.setItem(key, val);
} }
catch (e) { } catch (e) { }
} }