diff --git a/packages/example/src/main.tsx b/packages/example/src/main.tsx
index 8fe1e6d..fc8645f 100644
--- a/packages/example/src/main.tsx
+++ b/packages/example/src/main.tsx
@@ -26,11 +26,11 @@ declare module "@tanstack/react-router" {
createRoot(document.getElementById("root")!).render(
-
+ //
-
+ //
)
diff --git a/packages/extension-query/src/QueryRunner.ts b/packages/extension-query/src/QueryRunner.ts
index 3bfa162..aa66331 100644
--- a/packages/extension-query/src/QueryRunner.ts
+++ b/packages/extension-query/src/QueryRunner.ts
@@ -1,5 +1,5 @@
import * as AsyncData from "@typed/async-data"
-import { Effect, Fiber, flow, identity, Option, Ref, SubscriptionRef } from "effect"
+import { Effect, Fiber, identity, Option, Ref, SubscriptionRef } from "effect"
export interface QueryRunner {
@@ -24,9 +24,17 @@ export const make = (
const interrupt = fiberRef.pipe(
Effect.flatMap(Option.match({
- onSome: flow(
- Fiber.interrupt,
- Effect.andThen(Ref.set(fiberRef, Option.none())),
+ onSome: fiber => Ref.set(fiberRef, Option.none()).pipe(
+ Effect.andThen(Fiber.interrupt(fiber))
+ ),
+ onNone: () => Effect.void,
+ }))
+ )
+
+ const forkInterrupt = fiberRef.pipe(
+ Effect.flatMap(Option.match({
+ onSome: fiber => Ref.set(fiberRef, Option.none()).pipe(
+ Effect.andThen(Fiber.interruptFork(fiber))
),
onNone: () => Effect.void,
}))
diff --git a/packages/extension-query/src/index.ts b/packages/extension-query/src/index.ts
index 390a9cc..e647a3a 100644
--- a/packages/extension-query/src/index.ts
+++ b/packages/extension-query/src/index.ts
@@ -25,7 +25,7 @@ export const QueryExtension = ReffuseExtension.make(() => ({
this.useFork(() => Stream.runForEach(runner.fiberRef.changes, Console.log), [])
- this.useFork(() => Effect.addFinalizer(() => runner.interrupt).pipe(
+ this.useEffect(() => Effect.addFinalizer(() => Effect.void).pipe(
Effect.andThen(Ref.set(runner.queryRef, props.effect())),
Effect.andThen(runner.forkFetch),
), [runner, ...props.deps])