Bug 41058: Assign timeout id when delaying issues table load

When AlwaysLoadCheckoutsTable is enabled and a delay is configured,
we were calling setTimeout without capturing the returned id, despite a
`loadIssuesTableDelayTimeoutId` variable already being declared and targetted
by clearTimeout. This prevented the "Load now" button from properly clearing
the pending timeout.

Test plan:
1. Configure a delay (LoadCheckoutsTableDelay > 0) so checkouts table
   loads after N seconds.
2. Go to a patron’s checkouts page.
3. Before the delay completes, click "Load now".
   - Without this patch: an alert window will display a "Something went wrong
	 when loading the table" error once the timeout triggers.
   - With this patch: the pending timeout is cleared; the table loads
     immediately only once.
4. Reload the page with the delay set; wait for the timeout to elapse
   and confirm the table loads normally.

Signed-off-by: Mike Grgurev <mike.grgurev@mainlib.org>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
grgurmg 2025-10-20 14:14:55 -04:00 committed by Lucas Gass
parent ea16d2288d
commit c8800512ab
No known key found for this signature in database
GPG Key ID: 60B447398B0D36CA
1 changed files with 2 additions and 2 deletions

View File

@ -751,7 +751,7 @@ var barcodefield = $("#barcode");
if (AlwaysLoadCheckoutsTable) {
if (LoadCheckoutsTableDelay) {
setTimeout(function () {
loadIssuesTableDelayTimeoutId = setTimeout(function () {
LoadIssuesTable();
}, LoadCheckoutsTableDelay * 1000);
} else {
@ -774,7 +774,7 @@ if (AlwaysLoadCheckoutsTable) {
if (Cookies.get("issues-table-load-immediately-" + script) == "true") {
if (LoadCheckoutsTableDelay) {
setTimeout(function () {
loadIssuesTableDelayTimeoutId = setTimeout(function () {
LoadIssuesTable();
}, LoadCheckoutsTableDelay * 1000);
} else {