Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/brown-trees-pay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@tanstack/electric-db-collection": patch
---

fix AbortController re-initialization to after being aborted (sync config)
24 changes: 13 additions & 11 deletions packages/electric-db-collection/src/electric.ts
Original file line number Diff line number Diff line change
Expand Up @@ -461,22 +461,24 @@ function createElectricSync<T extends Row<unknown>>(
}
}

// Abort controller for the stream - wraps the signal if provided
const abortController = new AbortController()
if (shapeOptions.signal) {
shapeOptions.signal.addEventListener(`abort`, () => {
abortController.abort()
})
if (shapeOptions.signal.aborted) {
abortController.abort()
}
}

let unsubscribeStream: () => void

return {
sync: (params: Parameters<SyncConfig<T>[`sync`]>[0]) => {
// Abort controller for the stream - wraps the signal if provided
const abortController = new AbortController()

if (shapeOptions.signal) {
shapeOptions.signal.addEventListener(`abort`, () => {
abortController.abort()
})
if (shapeOptions.signal.aborted) {
abortController.abort()
}
}

const { begin, write, commit, markReady, truncate, collection } = params

const stream = new ShapeStream({
...shapeOptions,
signal: abortController.signal,
Expand Down
Loading