fix: debounce panel back callback registration
This commit is contained in:
@@ -415,6 +415,17 @@ FloatBallAppWM.prototype.registerPanelPredictiveBack = function(panel, which) {
|
|||||||
try {
|
try {
|
||||||
if (!panel) return false;
|
if (!panel) return false;
|
||||||
if (android.os.Build.VERSION.SDK_INT < 33) return false;
|
if (android.os.Build.VERSION.SDK_INT < 33) return false;
|
||||||
|
// attach listener + post fallback may fire almost together; avoid unregister/register churn and duplicate logs.
|
||||||
|
try {
|
||||||
|
var nowReg = Date.now();
|
||||||
|
var entries0 = this.state.panelBackCallbackEntries || [];
|
||||||
|
for (var ei0 = 0; ei0 < entries0.length; ei0++) {
|
||||||
|
var it0 = entries0[ei0];
|
||||||
|
if (it0 && it0.view === panel && String(it0.which || "") === String(which || "") && (nowReg - Number(it0.registeredAt || 0)) < 300) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch(eRegDebounce) {}
|
||||||
this.unregisterPanelPredictiveBack(panel);
|
this.unregisterPanelPredictiveBack(panel);
|
||||||
var dispatcher = null;
|
var dispatcher = null;
|
||||||
try { dispatcher = panel.findOnBackInvokedDispatcher(); } catch (eFind) { dispatcher = null; }
|
try { dispatcher = panel.findOnBackInvokedDispatcher(); } catch (eFind) { dispatcher = null; }
|
||||||
@@ -483,7 +494,7 @@ FloatBallAppWM.prototype.registerPanelPredictiveBack = function(panel, which) {
|
|||||||
} catch (ePri) { priority = 0; }
|
} catch (ePri) { priority = 0; }
|
||||||
dispatcher.registerOnBackInvokedCallback(priority, cb);
|
dispatcher.registerOnBackInvokedCallback(priority, cb);
|
||||||
if (!this.state.panelBackCallbackEntries) this.state.panelBackCallbackEntries = [];
|
if (!this.state.panelBackCallbackEntries) this.state.panelBackCallbackEntries = [];
|
||||||
this.state.panelBackCallbackEntries.push({ view: panel, dispatcher: dispatcher, callback: cb, which: String(which || ""), animation: usedAnimation, mode: mode });
|
this.state.panelBackCallbackEntries.push({ view: panel, dispatcher: dispatcher, callback: cb, which: String(which || ""), animation: usedAnimation, mode: mode, registeredAt: Date.now() });
|
||||||
safeLog(this.L, 'i', "back callback registered which=" + String(which || "") + " mode=" + mode + " priority=" + String(priority));
|
safeLog(this.L, 'i', "back callback registered which=" + String(which || "") + " mode=" + mode + " priority=" + String(priority));
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -34,8 +34,8 @@
|
|||||||
"size": 7938
|
"size": 7938
|
||||||
},
|
},
|
||||||
"th_09_animation.js": {
|
"th_09_animation.js": {
|
||||||
"sha256": "56c53d9b8ba4bb9547dd4c939555a10ab1911220ac7b2188db87ec6f4203c326",
|
"sha256": "79e81066da481c8d3a306483a313771fc1058031244f445edb2a618f23dfdbc3",
|
||||||
"size": 40197
|
"size": 40746
|
||||||
},
|
},
|
||||||
"th_10_shell.js": {
|
"th_10_shell.js": {
|
||||||
"sha256": "0ed793079c2f6ba7d29f4c0d411705cb72419f45f572cbe37ed32ac16527a8bc",
|
"sha256": "0ed793079c2f6ba7d29f4c0d411705cb72419f45f572cbe37ed32ac16527a8bc",
|
||||||
@@ -68,5 +68,5 @@
|
|||||||
},
|
},
|
||||||
"keyId": "toolhub-targets-2026-rsa3072",
|
"keyId": "toolhub-targets-2026-rsa3072",
|
||||||
"schema": 2,
|
"schema": 2,
|
||||||
"version": 20260521212532
|
"version": 20260521212917
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
XzOOqPWRABdrCv/sRx2arVudQsKv9RaTODpYcc/m6v3xaVU2fZCD4oslWZd5QMDthkf7fxkyyLZIo5CGUD3us872ESeFv31MXg+8DRyhv9jQefJouhVokQbkE8kKCojo6OMD9C10gYAhI6Fjm+VGZnyOsMo8qusM2idP1M4afTnVy9jSexcC3Aev50tWJFNuHe+fQLPXL+Elys4z0i56XOhT3BRS+BaxjL0E8Xy3G1vKrKKIeLrKHZ4GJjcsb0O85c7dt3Hf4x5+NkeLOIOuulG5LybzAHREoraOlzQ8tyuGnNJkZmR34mfBG4L0Eq/xx1sTFpMMEHYCwqiTXbe6dsWSanp9EV2/TVczA4zzjb00xYTpqmRBA3gqXEXgZAKfre0qf72DzVA8VdIxjkZ3n/taPrgcoFuIRxEME94oIHkkghwFa0kKygwfgRa8Nm05LnQUsV4wnmtLwixCeX+0GGPVhxrj5tZC9JATR6ElWfTUlTToLOS2ke9iz7IkkoWj
|
J+ucJ2iSqsLOHjiSuiZWkgPHIxPW6L69huPNPmVDNKuWqgBacB4NV4TcroZNqg5vbl/4BWCdOjyfPJkQGH/qbhDUMcyRxgPxNC1WgZ5bIbwnjWuiS+g/70OFjWsHKiMzlTZoa+djEOZeLt4HHCHiLe/KNPDFSPEQvJaUHJY6gltW7tqHRtI3IrU5pyPvMmgDGUF1o/HOScUWPuNnGUgJC75SBFj7rplfBOyOcMzMK5U/bOEeSRBcjJmEH1Rm6bNIoPPU049Ugn90rGUYcZTiG8oLdDn5Jc7iOvyPrtEz80IjTiurO5VVTD2O21GUnjPF7Y70LfzYJ/DOapSGGZYGkJcrmrMsarKakbcFy+/wv0j+yEF9MCgfWWAtIX4TEV25O0/UV2J8Ur2uf7yHhTIuZ23qtyNFW+0psEgPjaqCg101mbiZxUzcdvuYYfqQheqp9nMCwUWDH6zqZS4UKWrb+b+RBDlEauIByIAiiWer19/ViDbvu94bI+ADh/iB5JPi
|
||||||
|
|||||||
Reference in New Issue
Block a user