fix(approval): clear stale approval cards while busy
This commit is contained in:
1 parent
aab43cdaff
commit
65c0864e34
2 files changed
+7
-3
No files matched your search
+3
-1
@@ -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
|
||||||
Reference in new issue
Block a user