Fix stale task polling by keeping it always active alongside WebSocket

Polling was disabled when wsConnected was true, but if the WS connected
while workers hadn't been redeployed (no pub/sub messages flowing), the
UI received no updates at all. Polling now always runs at 5s as the
baseline. WebSocket provides faster real-time updates on top when
available — the two coexist, last writer wins.
This commit is contained in:
Viktor Barzin 2026-02-09 21:37:07 +00:00
parent f3cbeb3f5e
commit 8d52bdf99d
No known key found for this signature in database
GPG key ID: 0EB088298288D958
2 changed files with 5 additions and 6 deletions

View file

@ -134,11 +134,8 @@ export function TaskIndicator({
}
}, [wsConnected, wsTasks, taskID]);
// ----- Polling fallback (only when WS is not connected) -----
// ----- Polling (always active as baseline; WS provides faster updates on top) -----
useEffect(() => {
// If WS is connected, skip polling
if (wsConnected) return;
if (!user || !taskID) {
setTaskStatus(null);
setTaskResult(null);
@ -153,6 +150,8 @@ export function TaskIndicator({
setTaskResult(null);
const pollTaskStatus = async () => {
// Skip this poll cycle if cancelled locally
if (cancelledRef.current) return true;
try {
const data = await fetchTaskStatus(user, taskID);
const status = data.status as TaskStatus;
@ -214,7 +213,7 @@ export function TaskIndicator({
}, POLLING_INTERVALS.TASK_STATUS_MS);
return () => clearInterval(interval);
}, [taskID, user, wsConnected]);
}, [taskID, user]);
const handleCancel = async () => {
if (!user || !taskID || isCancelling) return;