Spaces:
Sleeping
Sleeping
[NOTICKET] [DED][FE] Fix analytics chat formatting and message persistence for cached responses
Browse files- Clear streamingMsgId immediately on SSE "message" event so cached responses
render with preprocessMarkdown applied (proper table/markdown formatting)
- Guard loadRoomMessages against overwriting local messages when backend returns
empty array — preserves chat history when backend does not persist cached LLM responses
- Add null-safety on detail?.messages to prevent TypeError on null API response
src/app/components/Main.tsx
CHANGED
|
@@ -349,7 +349,7 @@ export default function Main() {
|
|
| 349 |
const loadRoomMessages = async (roomId: string) => {
|
| 350 |
try {
|
| 351 |
const detail = await getRoom(roomId);
|
| 352 |
-
const messages: Message[] = detail.messages.map((m) => ({
|
| 353 |
id: m.id,
|
| 354 |
role: m.role,
|
| 355 |
content: m.content,
|
|
@@ -359,7 +359,9 @@ export default function Main() {
|
|
| 359 |
setChats((prev) =>
|
| 360 |
prev.map((chat) =>
|
| 361 |
chat.id === roomId
|
| 362 |
-
?
|
|
|
|
|
|
|
| 363 |
: chat
|
| 364 |
)
|
| 365 |
);
|
|
@@ -563,6 +565,7 @@ export default function Main() {
|
|
| 563 |
: chat
|
| 564 |
)
|
| 565 |
);
|
|
|
|
| 566 |
} else if (currentEvent === "done") {
|
| 567 |
streamDone = true;
|
| 568 |
break;
|
|
|
|
| 349 |
const loadRoomMessages = async (roomId: string) => {
|
| 350 |
try {
|
| 351 |
const detail = await getRoom(roomId);
|
| 352 |
+
const messages: Message[] = (detail?.messages ?? []).map((m) => ({
|
| 353 |
id: m.id,
|
| 354 |
role: m.role,
|
| 355 |
content: m.content,
|
|
|
|
| 359 |
setChats((prev) =>
|
| 360 |
prev.map((chat) =>
|
| 361 |
chat.id === roomId
|
| 362 |
+
? messages.length === 0 && chat.messages.length > 0
|
| 363 |
+
? { ...chat, messagesLoaded: true }
|
| 364 |
+
: { ...chat, messages, messagesLoaded: true }
|
| 365 |
: chat
|
| 366 |
)
|
| 367 |
);
|
|
|
|
| 565 |
: chat
|
| 566 |
)
|
| 567 |
);
|
| 568 |
+
setStreamingMsgId(null);
|
| 569 |
} else if (currentEvent === "done") {
|
| 570 |
streamDone = true;
|
| 571 |
break;
|