From 851defd93718f3713b6e15a045db6d1ff61d271d Mon Sep 17 00:00:00 2001 From: bolshoytoster Date: Sat, 31 May 2025 20:46:11 +0100 Subject: [PATCH] WebUI: keep client session from expiring --- src/webui/www/private/scripts/client.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/webui/www/private/scripts/client.js b/src/webui/www/private/scripts/client.js index 91d6f4695..6567825f9 100644 --- a/src/webui/www/private/scripts/client.js +++ b/src/webui/www/private/scripts/client.js @@ -73,7 +73,11 @@ window.qBittorrent.Client ??= (() => { }; const getSyncMainDataInterval = () => { - return customSyncMainDataInterval ? customSyncMainDataInterval : serverSyncMainDataInterval; + return document.hidden + ? window.qBittorrent.Cache.preferences.get().web_ui_session_timeout * 500 + : customSyncMainDataInterval + ? customSyncMainDataInterval + : serverSyncMainDataInterval; }; let stopped = false; @@ -779,8 +783,6 @@ window.addEventListener("DOMContentLoaded", (event) => { let syncMainDataTimeoutID = -1; let syncRequestInProgress = false; const syncMainData = () => { - if (document.hidden) - return; syncRequestInProgress = true; const url = new URL("api/v2/sync/maindata", window.location); url.search = new URLSearchParams({ @@ -956,6 +958,10 @@ window.addEventListener("DOMContentLoaded", (event) => { if (fullUpdate) // re-select previously selected rows torrentsTable.reselectRows(torrentsTableSelectedRows); + } else if (response.status == 403) { + const errorDiv = document.getElementById("error_div"); + if (errorDiv) + errorDiv.textContent = "QBT_TR(You've been logged out)QBT_TR[CONTEXT=HttpServer]"; } syncRequestInProgress = false; @@ -966,7 +972,11 @@ window.addEventListener("DOMContentLoaded", (event) => { if (errorDiv) errorDiv.textContent = "QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]"; syncRequestInProgress = false; - syncData(2000); + syncData( + document.hidden + ? window.qBittorrent.Cache.preferences.get().web_ui_session_timeout * 500 + : 2000 + ); }); };