mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-30 03:00:41 -04:00
fix(frontend): reset paged state on send to prevent misordering during streaming
When a completed session (forwardPaginated=true) has forward-loaded history pages and the user sends a new message, pagedMessages would appear after the new streaming turn instead of before it. Reset pagedRawMessages before calling sendMessage so ordering is always correct during the active stream. Expose resetPaged() from useLoadMoreMessages for this purpose.
This commit is contained in:
@@ -86,7 +86,7 @@ export function useCopilotPage() {
|
||||
copilotModel: isModeToggleEnabled ? copilotLlmModel : undefined,
|
||||
});
|
||||
|
||||
const { pagedMessages, hasMore, isLoadingMore, loadMore } =
|
||||
const { pagedMessages, hasMore, isLoadingMore, loadMore, resetPaged } =
|
||||
useLoadMoreMessages({
|
||||
sessionId,
|
||||
initialOldestSequence: oldestSequence,
|
||||
@@ -261,6 +261,15 @@ export function useCopilotPage() {
|
||||
isUserStoppingRef.current = false;
|
||||
|
||||
if (sessionId) {
|
||||
// When continuing a completed session that had forward-paginated history
|
||||
// loaded, the paged messages would appear in wrong position relative to
|
||||
// the new streaming turn (pagedMessages are newer pages, so they'd end
|
||||
// up after the streaming turn). Reset paged state so ordering is correct
|
||||
// during streaming; the user can reload history afterward if needed.
|
||||
if (forwardPaginated && pagedMessages.length > 0) {
|
||||
resetPaged();
|
||||
}
|
||||
|
||||
if (files && files.length > 0) {
|
||||
setIsUploadingFiles(true);
|
||||
try {
|
||||
|
||||
@@ -188,5 +188,15 @@ export function useLoadMoreMessages({
|
||||
}
|
||||
}
|
||||
|
||||
return { pagedMessages, hasMore, isLoadingMore, loadMore };
|
||||
function resetPaged() {
|
||||
setPagedRawMessages([]);
|
||||
setOldestSequence(initialOldestSequence);
|
||||
setNewestSequence(initialNewestSequence);
|
||||
setHasMore(initialHasMore);
|
||||
isLoadingMoreRef.current = false;
|
||||
consecutiveErrorsRef.current = 0;
|
||||
epochRef.current += 1;
|
||||
}
|
||||
|
||||
return { pagedMessages, hasMore, isLoadingMore, loadMore, resetPaged };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user