Message addition performance improvements
This commit is contained in:
@@ -296,9 +296,6 @@ export function createInstanceMessageStore(instanceId: string): InstanceMessageS
|
||||
ensureSessionEntry(sessionId)
|
||||
|
||||
const incomingIds = inputs.map((item) => item.id)
|
||||
const incomingIdSet = new Set(incomingIds)
|
||||
const existingIds = state.sessions[sessionId]?.messageIds ?? []
|
||||
const removedIds = existingIds.filter((id) => !incomingIdSet.has(id))
|
||||
|
||||
const normalizedRecords: Record<string, MessageRecord> = {}
|
||||
const now = Date.now()
|
||||
@@ -331,18 +328,6 @@ export function createInstanceMessageStore(instanceId: string): InstanceMessageS
|
||||
...state.permissions.byMessage,
|
||||
}
|
||||
|
||||
removedIds.forEach((id) => {
|
||||
if (nextMessages[id]?.sessionId === sessionId) {
|
||||
delete nextMessages[id]
|
||||
delete nextMessageInfoVersion[id]
|
||||
delete nextPendingParts[id]
|
||||
if (nextPermissionsByMessage[id]) {
|
||||
delete nextPermissionsByMessage[id]
|
||||
}
|
||||
}
|
||||
messageInfoCache.delete(id)
|
||||
})
|
||||
|
||||
Object.entries(normalizedRecords).forEach(([id, record]) => {
|
||||
nextMessages[id] = record
|
||||
})
|
||||
|
||||
@@ -62,16 +62,13 @@ function findPendingMessageId(
|
||||
role: MessageRole,
|
||||
): string | undefined {
|
||||
const messageIds = store.getSessionMessageIds(sessionId)
|
||||
for (let i = messageIds.length - 1; i >= 0; i -= 1) {
|
||||
const record = store.getMessage(messageIds[i])
|
||||
if (!record) continue
|
||||
if (record.sessionId !== sessionId) continue
|
||||
if (record.role !== role) continue
|
||||
if (record.status === "sending") {
|
||||
return record.id
|
||||
}
|
||||
}
|
||||
return undefined
|
||||
const lastId = messageIds[messageIds.length - 1]
|
||||
if (!lastId) return undefined
|
||||
const record = store.getMessage(lastId)
|
||||
if (!record) return undefined
|
||||
if (record.sessionId !== sessionId) return undefined
|
||||
if (record.role !== role) return undefined
|
||||
return record.status === "sending" ? record.id : undefined
|
||||
}
|
||||
|
||||
function handleMessageUpdate(instanceId: string, event: MessageUpdateEvent | MessagePartUpdatedEvent): void {
|
||||
|
||||
Reference in New Issue
Block a user