mirror of
https://github.com/hangwin/mcp-chrome.git
synced 2026-09-24 23:24:04 +08:00
fix: 修复录制过程中同个标签页内发生导航会清空状态的bug
This commit is contained in:
+4
@@ -54,6 +54,10 @@ export function initBrowserEventListeners(session: RecordingSessionManager): voi
|
||||
await broadcastControlToTab(tabId, REC_CMD.START);
|
||||
// Track active tab for targeted STOP later
|
||||
session.addActiveTab(tabId);
|
||||
const f = session.getFlow();
|
||||
if (f) {
|
||||
session.broadcastTimelineUpdate(f.steps || []);
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('onCommitted handler failed', e);
|
||||
}
|
||||
|
||||
+18
-22
@@ -31,31 +31,27 @@ export function appendSteps(flow: Flow, steps: Step[]): void {
|
||||
if (!step.id) step.id = generateStepId();
|
||||
flow.steps.push(step);
|
||||
}
|
||||
try {
|
||||
const timeStamp = new Date().toISOString();
|
||||
if (flow.meta) {
|
||||
flow.meta.updatedAt = timeStamp;
|
||||
} else {
|
||||
flow = {
|
||||
...flow,
|
||||
meta: {
|
||||
createdAt: timeStamp,
|
||||
updatedAt: timeStamp,
|
||||
},
|
||||
};
|
||||
}
|
||||
} catch {}
|
||||
const timeStamp = new Date().toISOString();
|
||||
if (flow.meta) {
|
||||
flow.meta.updatedAt = timeStamp;
|
||||
} else {
|
||||
flow = {
|
||||
...flow,
|
||||
meta: {
|
||||
createdAt: timeStamp,
|
||||
updatedAt: timeStamp,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export function addNavigationStep(flow: Flow, url: string): void {
|
||||
const step: Step = { id: generateStepId(), type: STEP_TYPES.NAVIGATE, url } as Step;
|
||||
try {
|
||||
// Prefer centralized session append (single broadcast path) when active and matching flow
|
||||
const sessFlow = recordingSession.getFlow?.();
|
||||
if (recordingSession.getStatus?.() === 'recording' && sessFlow === flow) {
|
||||
recordingSession.appendSteps([step]);
|
||||
return;
|
||||
}
|
||||
} catch {}
|
||||
// Prefer centralized session append (single broadcast path) when active and matching flow
|
||||
const sessFlow = recordingSession.getFlow?.();
|
||||
if (recordingSession.getStatus?.() === 'recording' && sessFlow === flow) {
|
||||
recordingSession.appendSteps([step]);
|
||||
return;
|
||||
}
|
||||
appendSteps(flow, [step]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user