fix(sync): preserve optimistic entries for stale loads
This commit is contained in:
@@ -360,16 +360,16 @@ export function useSync() {
|
|||||||
mode: "replace" | "prepend" | undefined,
|
mode: "replace" | "prepend" | undefined,
|
||||||
isStale?: () => boolean,
|
isStale?: () => boolean,
|
||||||
) => {
|
) => {
|
||||||
|
if (isStale?.()) {
|
||||||
|
return { messages: [], cursor: page.cursor, complete: page.complete }
|
||||||
|
}
|
||||||
|
|
||||||
const items = getOptimistic(sessionID)
|
const items = getOptimistic(sessionID)
|
||||||
const merged = mergeOptimisticPage(page, items)
|
const merged = mergeOptimisticPage(page, items)
|
||||||
for (const messageID of merged.confirmed) {
|
for (const messageID of merged.confirmed) {
|
||||||
clearOptimistic(sessionID, messageID)
|
clearOptimistic(sessionID, messageID)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isStale?.()) {
|
|
||||||
return { messages: [], cursor: merged.cursor, complete: merged.complete }
|
|
||||||
}
|
|
||||||
|
|
||||||
const current = store.getState()
|
const current = store.getState()
|
||||||
const materialized = materializeSessionSnapshots(
|
const materialized = materializeSessionSnapshots(
|
||||||
current,
|
current,
|
||||||
|
|||||||
Reference in New Issue
Block a user