fix(approval): clear stale approval cards while busy

This commit is contained in:
Rod Boev committed 2026-06-12 11:55:43 -04:00
1 parent aab43cdaff
commit 65c0864e34
2 files changed
+7 -3

No files matched your search

+3 -1
View File
@@ -4172,11 +4172,13 @@ function _startApprovalFallbackPoll(sid) {
try { try {
const data = await api("/api/approval/pending?session_id=" + encodeURIComponent(sid),{timeoutToast:false}); const data = await api("/api/approval/pending?session_id=" + encodeURIComponent(sid),{timeoutToast:false});
if (data.pending) { showApprovalForSession(sid, data.pending, data.pending_count||1); } if (data.pending) { showApprovalForSession(sid, data.pending, data.pending_count||1); }
else if (!_approvalPollingSessionMissingOrMismatched(sid) && !S.busy) { else if (!_approvalPollingSessionMissingOrMismatched(sid)) {
_clearApprovalPendingForSession(sid); _clearApprovalPendingForSession(sid);
_hideApprovalCardIfOwner(sid); _hideApprovalCardIfOwner(sid);
if (!S.busy) {
stopApprovalPollingForSession(sid); stopApprovalPollingForSession(sid);
} }
}
} catch(e) { /* ignore poll errors */ } } catch(e) { /* ignore poll errors */ }
finally { _approvalFallbackPollInFlight = false; } finally { _approvalFallbackPollInFlight = false; }
}; };
@@ -36,11 +36,13 @@ def test_busy_dips_no_longer_force_stop_approval_polling():
assert "!S.busy || !S.session || S.session.session_id !== sid" not in body assert "!S.busy || !S.session || S.session.session_id !== sid" not in body
def test_empty_pending_only_stops_after_confirmed_idle(): def test_empty_pending_clears_card_and_only_stops_after_confirmed_idle():
fallback_body = _function_body("_startApprovalFallbackPoll") fallback_body = _function_body("_startApprovalFallbackPoll")
assert "else if (!_approvalPollingSessionMissingOrMismatched(sid) && !S.busy)" in fallback_body assert "else if (!_approvalPollingSessionMissingOrMismatched(sid)) {" in fallback_body
assert "_clearApprovalPendingForSession(sid);" in fallback_body assert "_clearApprovalPendingForSession(sid);" in fallback_body
assert "_hideApprovalCardIfOwner(sid);" in fallback_body assert "_hideApprovalCardIfOwner(sid);" in fallback_body
assert "if (!S.busy) {" in fallback_body
assert "stopApprovalPollingForSession(sid);" in fallback_body assert "stopApprovalPollingForSession(sid);" in fallback_body
assert "else if (!_approvalPollingSessionMissingOrMismatched(sid) && !S.busy)" not in fallback_body
assert "stopApprovalPolling(); _hideApprovalCardIfOwner(sid, true); return;" in fallback_body assert "stopApprovalPolling(); _hideApprovalCardIfOwner(sid, true); return;" in fallback_body