perf: batch history reactive triggers to rAF in chatEventHandler (#22947)
This commit is contained in:
@@ -536,7 +536,13 @@
|
|||||||
console.log('Unknown message type', data);
|
console.log('Unknown message type', data);
|
||||||
}
|
}
|
||||||
|
|
||||||
history.messages[event.message_id] = message;
|
if (type === 'chat:message:delta' || type === 'message' || type === 'status') {
|
||||||
|
scheduleHistoryFlush();
|
||||||
|
} else {
|
||||||
|
cancelAnimationFrame(historyRAF);
|
||||||
|
historyRAF = null;
|
||||||
|
history.messages[event.message_id] = message;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Non-active chat completion: queue stays in the global store.
|
// Non-active chat completion: queue stays in the global store.
|
||||||
@@ -1279,6 +1285,15 @@
|
|||||||
|
|
||||||
let scrollRAF = null;
|
let scrollRAF = null;
|
||||||
let contentsRAF = null;
|
let contentsRAF = null;
|
||||||
|
let historyRAF = null;
|
||||||
|
const scheduleHistoryFlush = () => {
|
||||||
|
if (!historyRAF) {
|
||||||
|
historyRAF = requestAnimationFrame(() => {
|
||||||
|
historyRAF = null;
|
||||||
|
history = history;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
const scheduleScrollToBottom = () => {
|
const scheduleScrollToBottom = () => {
|
||||||
if (!scrollRAF) {
|
if (!scrollRAF) {
|
||||||
scrollRAF = requestAnimationFrame(async () => {
|
scrollRAF = requestAnimationFrame(async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user