diff --git a/packages/extension-query/src/QueryExtension.ts b/packages/extension-query/src/QueryExtension.ts
index 380ff56..8ad003f 100644
--- a/packages/extension-query/src/QueryExtension.ts
+++ b/packages/extension-query/src/QueryExtension.ts
@@ -1,6 +1,5 @@
-import { BrowserStream } from "@effect/platform-browser"
import * as AsyncData from "@typed/async-data"
-import { Effect, Fiber, Ref, Stream, SubscriptionRef } from "effect"
+import { Effect, Fiber, Ref, SubscriptionRef } from "effect"
import * as React from "react"
import { ReffuseExtension, type ReffuseHelpers } from "reffuse"
import * as QueryRunner from "./QueryRunner.js"
@@ -31,10 +30,7 @@ export const QueryExtension = ReffuseExtension.make(() => ({
Effect.andThen(runner.forkFetch),
), [runner, ...props.key])
- this.useFork(() => Stream.runForEach(
- BrowserStream.fromEventListenerWindow("focus"),
- () => runner.forkRefresh,
- ), [runner])
+ this.useFork(() => runner.refreshOnWindowFocus, [runner])
return React.useMemo(() => ({
state: runner.stateRef,
diff --git a/packages/extension-query/src/QueryRunner.ts b/packages/extension-query/src/QueryRunner.ts
index 93cef0f..2a75a70 100644
--- a/packages/extension-query/src/QueryRunner.ts
+++ b/packages/extension-query/src/QueryRunner.ts
@@ -1,5 +1,6 @@
+import { BrowserStream } from "@effect/platform-browser"
import * as AsyncData from "@typed/async-data"
-import { Effect, Fiber, identity, Option, Ref, SubscriptionRef } from "effect"
+import { Effect, Fiber, identity, Option, Ref, Stream, SubscriptionRef } from "effect"
export interface QueryRunner {
@@ -10,6 +11,8 @@ export interface QueryRunner {
readonly forkInterrupt: Effect.Effect>
readonly forkFetch: Effect.Effect>
readonly forkRefresh: Effect.Effect>
+
+ readonly refreshOnWindowFocus: Effect.Effect
}
@@ -91,6 +94,11 @@ export const make = (
Effect.forkDaemon,
)
+ const refreshOnWindowFocus = Stream.runForEach(
+ BrowserStream.fromEventListenerWindow("focus"),
+ () => forkRefresh,
+ )
+
return {
queryRef,
stateRef,
@@ -99,5 +107,7 @@ export const make = (
forkInterrupt,
forkFetch,
forkRefresh,
+
+ refreshOnWindowFocus,
}
})