Stream each task's transcript over its own SSE; keep session note order
This commit is contained in:
Vendored
+18
-6
@@ -52,7 +52,7 @@ export const put = (path, opts) => request("put", path, opts);
|
||||
export const del = (path, opts) => request("delete", path, opts);
|
||||
const staleAfterMs = 40_000;
|
||||
const retryAfterMs = 2_000;
|
||||
export function subscribe(after, onEvent, onState) {
|
||||
export function subscribe(after, taskId, onEvent, onState) {
|
||||
let last = after;
|
||||
let heard = Date.now();
|
||||
let source;
|
||||
@@ -61,7 +61,11 @@ export function subscribe(after, onEvent, onState) {
|
||||
clearTimeout(retry);
|
||||
source?.close();
|
||||
heard = Date.now();
|
||||
const s = new EventSource(`/api/events?after=${last}`);
|
||||
const query = new URLSearchParams({ after: String(last) });
|
||||
if (taskId) {
|
||||
query.set("task_id", taskId);
|
||||
}
|
||||
const s = new EventSource(`/api/events?${query}`);
|
||||
source = s;
|
||||
s.onopen = () => {
|
||||
heard = Date.now();
|
||||
@@ -92,13 +96,21 @@ export function subscribe(after, onEvent, onState) {
|
||||
onState(false);
|
||||
connect();
|
||||
};
|
||||
setInterval(check, 5_000);
|
||||
addEventListener("online", connect);
|
||||
document.addEventListener("visibilitychange", () => {
|
||||
const onVisible = () => {
|
||||
if (document.visibilityState === "visible") {
|
||||
check();
|
||||
}
|
||||
});
|
||||
};
|
||||
const interval = setInterval(check, 5_000);
|
||||
addEventListener("online", connect);
|
||||
document.addEventListener("visibilitychange", onVisible);
|
||||
connect();
|
||||
return () => {
|
||||
clearInterval(interval);
|
||||
clearTimeout(retry);
|
||||
removeEventListener("online", connect);
|
||||
document.removeEventListener("visibilitychange", onVisible);
|
||||
source?.close();
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=api.js.map
|
||||
Reference in New Issue
Block a user