fix(ena-planner): restore non-stream send interception flow

This commit is contained in:
2026-02-25 17:51:12 +08:00
parent 419c95808a
commit 886ae7168d

View File

@@ -77,9 +77,7 @@ let overlay = null;
let iframeMessageBound = false; let iframeMessageBound = false;
let sendListenersInstalled = false; let sendListenersInstalled = false;
let sendClickHandler = null; let sendClickHandler = null;
let sendPointerDownHandler = null;
let sendKeydownHandler = null; let sendKeydownHandler = null;
let sendKeyupHandler = null;
/** /**
* ------------------------- * -------------------------
@@ -1334,12 +1332,12 @@ function shouldInterceptNow() {
return true; return true;
} }
async function doInterceptAndPlanThenSend(rawSnapshot = '') { async function doInterceptAndPlanThenSend() {
const ta = getSendTextarea(); const ta = getSendTextarea();
const btn = getSendButton(); const btn = getSendButton();
if (!ta || !btn) return; if (!ta || !btn) return;
const raw = String(rawSnapshot || ta.value || '').trim(); const raw = String(ta.value ?? '').trim();
if (!raw) return; if (!raw) return;
state.isPlanning = true; state.isPlanning = true;
@@ -1368,23 +1366,6 @@ async function doInterceptAndPlanThenSend(rawSnapshot = '') {
function installSendInterceptors() { function installSendInterceptors() {
if (sendListenersInstalled) return; if (sendListenersInstalled) return;
sendPointerDownHandler = (e) => {
const btn = getSendButton();
if (!btn) return;
if (e.target !== btn && !btn.contains(e.target)) return;
const ta = getSendTextarea();
const raw = String(ta?.value ?? '').trim();
if (!raw) return;
if (state.isPlanning) {
e.preventDefault();
e.stopImmediatePropagation();
return;
}
if (!shouldInterceptNow()) return;
e.preventDefault();
e.stopImmediatePropagation();
doInterceptAndPlanThenSend(raw).catch(err => toastErr(String(err?.message ?? err)));
};
sendClickHandler = (e) => { sendClickHandler = (e) => {
const btn = getSendButton(); const btn = getSendButton();
if (!btn) return; if (!btn) return;
@@ -1395,50 +1376,31 @@ function installSendInterceptors() {
return; return;
} }
if (!shouldInterceptNow()) return; if (!shouldInterceptNow()) return;
const ta = getSendTextarea();
const raw = String(ta?.value ?? '').trim();
if (!raw) return;
e.preventDefault(); e.preventDefault();
e.stopImmediatePropagation(); e.stopImmediatePropagation();
doInterceptAndPlanThenSend(raw).catch(err => toastErr(String(err?.message ?? err))); doInterceptAndPlanThenSend().catch(err => toastErr(String(err?.message ?? err)));
}; };
sendKeydownHandler = (e) => { sendKeydownHandler = (e) => {
const ta = getSendTextarea(); const ta = getSendTextarea();
if (!ta || e.target !== ta) return; if (!ta || e.target !== ta) return;
if (e.key === 'Enter' && !e.shiftKey) { if (e.key === 'Enter' && !e.shiftKey) {
if (!shouldInterceptNow()) return; if (!shouldInterceptNow()) return;
const raw = String(ta.value ?? '').trim();
if (!raw) return;
e.preventDefault(); e.preventDefault();
e.stopImmediatePropagation(); e.stopImmediatePropagation();
doInterceptAndPlanThenSend(raw).catch(err => toastErr(String(err?.message ?? err))); doInterceptAndPlanThenSend().catch(err => toastErr(String(err?.message ?? err)));
} }
}; };
sendKeyupHandler = (e) => {
const ta = getSendTextarea();
if (!ta || e.target !== ta) return;
if (e.key !== 'Enter' || e.shiftKey) return;
if (!state.isPlanning) return;
e.preventDefault();
e.stopImmediatePropagation();
};
document.addEventListener('pointerdown', sendPointerDownHandler, true);
document.addEventListener('click', sendClickHandler, true); document.addEventListener('click', sendClickHandler, true);
document.addEventListener('keydown', sendKeydownHandler, true); document.addEventListener('keydown', sendKeydownHandler, true);
document.addEventListener('keyup', sendKeyupHandler, true);
sendListenersInstalled = true; sendListenersInstalled = true;
} }
function uninstallSendInterceptors() { function uninstallSendInterceptors() {
if (!sendListenersInstalled) return; if (!sendListenersInstalled) return;
if (sendPointerDownHandler) document.removeEventListener('pointerdown', sendPointerDownHandler, true);
if (sendClickHandler) document.removeEventListener('click', sendClickHandler, true); if (sendClickHandler) document.removeEventListener('click', sendClickHandler, true);
if (sendKeydownHandler) document.removeEventListener('keydown', sendKeydownHandler, true); if (sendKeydownHandler) document.removeEventListener('keydown', sendKeydownHandler, true);
if (sendKeyupHandler) document.removeEventListener('keyup', sendKeyupHandler, true);
sendPointerDownHandler = null;
sendClickHandler = null; sendClickHandler = null;
sendKeydownHandler = null; sendKeydownHandler = null;
sendKeyupHandler = null;
sendListenersInstalled = false; sendListenersInstalled = false;
} }