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