fix: Properly handle promises that lead to hangs on swipes

This commit is contained in:
joenunezb
2025-12-26 19:01:05 -08:00
parent 6b73e422de
commit b38dbe06a6
+9 -1
View File
@@ -14,6 +14,7 @@ let currentlyHiddenRange = null;
// Debounce restore to prevent loops
let isRestoring = false;
let restoreTimeout = null;
let pendingResolve = null; // Track pending promise resolve function
/**
* Gets the current chapter checkpoint message ID for the active chat
@@ -129,13 +130,19 @@ export async function restoreCheckpointOnLoad() {
return;
}
// Clear any pending timeout
// Clear any pending timeout and resolve the pending promise
if (restoreTimeout) {
clearTimeout(restoreTimeout);
restoreTimeout = null;
}
if (pendingResolve) {
pendingResolve();
pendingResolve = null;
}
// Debounce: wait 100ms before actually restoring
return new Promise((resolve) => {
pendingResolve = resolve; // Track this promise's resolve function
restoreTimeout = setTimeout(async () => {
isRestoring = true;
try {
@@ -174,6 +181,7 @@ export async function restoreCheckpointOnLoad() {
}
} finally {
isRestoring = false;
pendingResolve = null;
resolve();
}
}, 100);