Skip reverted messages from display caches
This commit is contained in:
@@ -192,8 +192,17 @@ export default function MessageStreamV2(props: MessageStreamV2Props) {
|
|||||||
const showUsagePreference = () => preferences().showUsageMetrics ?? true
|
const showUsagePreference = () => preferences().showUsageMetrics ?? true
|
||||||
const store = createMemo(() => messageStoreBus.getOrCreate(props.instanceId))
|
const store = createMemo(() => messageStoreBus.getOrCreate(props.instanceId))
|
||||||
const messageIds = createMemo(() => store().getSessionMessageIds(props.sessionId))
|
const messageIds = createMemo(() => store().getSessionMessageIds(props.sessionId))
|
||||||
|
const visibleMessageIds = createMemo(() => {
|
||||||
|
const ids = messageIds()
|
||||||
|
const revert = store().getSessionRevert(props.sessionId)
|
||||||
|
if (!revert?.messageID) {
|
||||||
|
return ids
|
||||||
|
}
|
||||||
|
const stopIndex = ids.indexOf(revert.messageID)
|
||||||
|
return stopIndex === -1 ? ids : ids.slice(0, stopIndex)
|
||||||
|
})
|
||||||
const messageRecords = createMemo(() =>
|
const messageRecords = createMemo(() =>
|
||||||
messageIds()
|
visibleMessageIds()
|
||||||
.map((id) => store().getMessage(id))
|
.map((id) => store().getMessage(id))
|
||||||
.filter((record): record is MessageRecord => Boolean(record)),
|
.filter((record): record is MessageRecord => Boolean(record)),
|
||||||
)
|
)
|
||||||
@@ -250,15 +259,17 @@ export default function MessageStreamV2(props: MessageStreamV2Props) {
|
|||||||
|
|
||||||
const messageIndexMap = createMemo(() => {
|
const messageIndexMap = createMemo(() => {
|
||||||
const map = new Map<string, number>()
|
const map = new Map<string, number>()
|
||||||
const records = messageRecords()
|
const ids = visibleMessageIds()
|
||||||
records.forEach((record, index) => map.set(record.id, index))
|
ids.forEach((id, index) => map.set(id, index))
|
||||||
return map
|
return map
|
||||||
})
|
})
|
||||||
|
|
||||||
const lastAssistantIndex = createMemo(() => {
|
const lastAssistantIndex = createMemo(() => {
|
||||||
const records = messageRecords()
|
const ids = visibleMessageIds()
|
||||||
for (let index = records.length - 1; index >= 0; index--) {
|
const resolvedStore = store()
|
||||||
if (records[index].role === "assistant") {
|
for (let index = ids.length - 1; index >= 0; index--) {
|
||||||
|
const record = resolvedStore.getMessage(ids[index])
|
||||||
|
if (record?.role === "assistant") {
|
||||||
return index
|
return index
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user