diff --git a/packages/app/src/thunk.ts b/packages/app/src/thunk.ts index 6700c0b..1c2e484 100644 --- a/packages/app/src/thunk.ts +++ b/packages/app/src/thunk.ts @@ -101,6 +101,8 @@ export const mergeThunks = (thunks: Thunk[]) => { } } +export const thunks = writable>({}) + export const publishThunk = (request: ThunkRequest) => { const thunk = makeThunk(request) @@ -108,6 +110,8 @@ export const publishThunk = (request: ThunkRequest) => { repository.publish(thunk.event) + thunks.update(assoc(thunk.event.id, thunk)) + thunk.controller.signal.addEventListener('abort', () => { repository.removeEvent(thunk.event.id) }) @@ -115,6 +119,25 @@ export const publishThunk = (request: ThunkRequest) => { return thunk } +export const publishThunks = (requests: ThunkRequest[]) => { + const newThunks = requests.map(makeThunk) + const mergedThunk = mergeThunks(newThunks) + + for (const thunk of newThunks) { + thunkWorker.push(thunk) + + repository.publish(thunk.event) + + thunks.update(assoc(thunk.event.id, mergedThunk)) + + thunk.controller.signal.addEventListener('abort', () => { + repository.removeEvent(thunk.event.id) + }) + } + + return mergedThunk +} + export const thunkWorker = new Worker() thunkWorker.addGlobalHandler((thunk: Thunk) => {