Transcript Incremental Projection
Nucleic-Session: 0FFD007B-0696-4517-9429-129C7B0FD5AC Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
@@ -659,6 +659,19 @@ final class RemoteStore: ObservableObject {
|
|||||||
self.openEvents = Self.mergedEvents(self.openEvents, batch.events)
|
self.openEvents = Self.mergedEvents(self.openEvents, batch.events)
|
||||||
self.persistOpenTranscript()
|
self.persistOpenTranscript()
|
||||||
}
|
}
|
||||||
|
cb.transcriptPrefetched = { [weak self] sessionID, events in
|
||||||
|
guard let self else { return }
|
||||||
|
self.prefetchInFlight = nil
|
||||||
|
if !events.isEmpty {
|
||||||
|
// Merge into whatever the cache already holds (the fetch pulled only the gap);
|
||||||
|
// `saveEvents` re-caps to the tail window on write.
|
||||||
|
Task {
|
||||||
|
let cached = await SessionCache.loadEvents(sessionID)
|
||||||
|
await SessionCache.saveEvents(Self.mergedEvents(cached, events), for: sessionID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.pumpTranscriptPrefetch()
|
||||||
|
}
|
||||||
cb.openDiff = { [weak self] diff in
|
cb.openDiff = { [weak self] diff in
|
||||||
guard let self, hostID == self.openSessionHostID, diff.sessionID == self.openSessionID else { return }
|
guard let self, hostID == self.openSessionHostID, diff.sessionID == self.openSessionID else { return }
|
||||||
self.openDiff = diff
|
self.openDiff = diff
|
||||||
|
|||||||
Reference in New Issue
Block a user