(sessionID: string, messageID: string, confirmedParts: Part[])
| 314 | } |
| 315 | |
| 316 | const confirmOptimistic = (sessionID: string, messageID: string, confirmedParts: Part[]) => { |
| 317 | const items = optimistic.get(sessionID) |
| 318 | const item = items?.get(messageID) |
| 319 | if (!items || !item) return |
| 320 | const confirmed = new Set(confirmedParts.map((part) => part.id)) |
| 321 | const parts = item.parts.filter((part) => !confirmed.has(part.id)) |
| 322 | if (parts.length === 0) { |
| 323 | clearOptimistic(sessionID, messageID) |
| 324 | return |
| 325 | } |
| 326 | items.set(messageID, { |
| 327 | ...item, |
| 328 | parts, |
| 329 | confirmedParts: merge(item.confirmedParts ?? [], confirmedParts), |
| 330 | confirmedMessage: true, |
| 331 | }) |
| 332 | } |
| 333 | |
| 334 | const trackPartChange = (sessionID: string, messageID: string, partID: string) => { |
| 335 | const load = messageLoads.get(sessionID) |
no test coverage detected