fixed injection watcher

This commit is contained in:
2026-06-11 08:18:30 +03:00
parent 481b93e84a
commit b5a1831b8e
5 changed files with 56 additions and 18 deletions
+22 -9
View File
@@ -228,22 +228,17 @@ export const api = {
});
if (!response.ok || !response.body) {
throw new Error("Failed to send message");
const detail = await response.text().catch(() => "");
throw new Error(detail || `Ошибка отправки (${response.status})`);
}
const reader = response.body.getReader();
const decoder = new TextDecoder();
let buffer = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const parts = buffer.split("\n\n");
buffer = parts.pop() ?? "";
const flushParts = function* (parts: string[]) {
for (const part of parts) {
if (!part.trim()) continue;
const lines = part.split("\n");
let event = "message";
let data = "";
@@ -257,6 +252,24 @@ export const api = {
yield { event, data: JSON.parse(data) };
}
}
};
while (true) {
const { done, value } = await reader.read();
if (value) {
buffer += decoder.decode(value, { stream: !done });
}
const parts = buffer.split("\n\n");
buffer = parts.pop() ?? "";
yield* flushParts(parts);
if (done) {
if (buffer.trim()) {
yield* flushParts([buffer]);
}
break;
}
}
},
+5 -3
View File
@@ -190,7 +190,6 @@ export default function Chat() {
setStreaming("");
setLiveNotices([]);
setChatError(null);
setLoading(false);
if (assistantText.trim()) {
setMessages((prev) => [
...prev,
@@ -202,8 +201,8 @@ export default function Chat() {
},
]);
}
void loadMessages(activeId);
void loadSessions();
await loadMessages(activeId);
await loadSessions();
}
if (chunk.event === "error") {
throw new Error(chunk.data.message);
@@ -214,6 +213,9 @@ export default function Chat() {
const message = err instanceof Error ? err.message : "Ошибка чата";
setChatError(message);
setStreaming("");
if (activeId) {
await loadMessages(activeId);
}
} finally {
setLoading(false);
}