feat(frontend): restore session progress sidebar
This commit is contained in:
@ -30,6 +30,42 @@ export function mergeServerWithPendingUsers(serverMessages: ChatMessage[], local
|
||||
return [...serverMessages, ...pendingUsers];
|
||||
}
|
||||
|
||||
export function shouldMergePendingUsers(
|
||||
serverMessages: ChatMessage[],
|
||||
localMessages: ChatMessage[],
|
||||
waitingForReply: boolean
|
||||
): boolean {
|
||||
if (waitingForReply) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const lastLocal = localMessages[localMessages.length - 1];
|
||||
if (lastLocal?.role !== 'user') {
|
||||
return false;
|
||||
}
|
||||
|
||||
const counts = new Map<string, number>();
|
||||
for (const message of serverMessages) {
|
||||
const key = messageFingerprint(message);
|
||||
counts.set(key, (counts.get(key) ?? 0) + 1);
|
||||
}
|
||||
|
||||
for (const message of localMessages) {
|
||||
if (message.role !== 'user') {
|
||||
continue;
|
||||
}
|
||||
const key = messageFingerprint(message);
|
||||
const count = counts.get(key) ?? 0;
|
||||
if (count > 0) {
|
||||
counts.set(key, count - 1);
|
||||
continue;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
export function getTaskCardMessageIndexes(messages: ChatMessage[]): Set<number> {
|
||||
const latestByTask = new Map<string, number>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user