0.1.3 #5
@@ -1,6 +1,5 @@
|
|||||||
import { BrowserStream } from "@effect/platform-browser"
|
|
||||||
import * as AsyncData from "@typed/async-data"
|
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 * as React from "react"
|
||||||
import { ReffuseExtension, type ReffuseHelpers } from "reffuse"
|
import { ReffuseExtension, type ReffuseHelpers } from "reffuse"
|
||||||
import * as QueryRunner from "./QueryRunner.js"
|
import * as QueryRunner from "./QueryRunner.js"
|
||||||
@@ -31,10 +30,7 @@ export const QueryExtension = ReffuseExtension.make(() => ({
|
|||||||
Effect.andThen(runner.forkFetch),
|
Effect.andThen(runner.forkFetch),
|
||||||
), [runner, ...props.key])
|
), [runner, ...props.key])
|
||||||
|
|
||||||
this.useFork(() => Stream.runForEach(
|
this.useFork(() => runner.refreshOnWindowFocus, [runner])
|
||||||
BrowserStream.fromEventListenerWindow("focus"),
|
|
||||||
() => runner.forkRefresh,
|
|
||||||
), [runner])
|
|
||||||
|
|
||||||
return React.useMemo(() => ({
|
return React.useMemo(() => ({
|
||||||
state: runner.stateRef,
|
state: runner.stateRef,
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
import { BrowserStream } from "@effect/platform-browser"
|
||||||
import * as AsyncData from "@typed/async-data"
|
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<A, E, R> {
|
export interface QueryRunner<A, E, R> {
|
||||||
@@ -10,6 +11,8 @@ export interface QueryRunner<A, E, R> {
|
|||||||
readonly forkInterrupt: Effect.Effect<Fiber.RuntimeFiber<void>>
|
readonly forkInterrupt: Effect.Effect<Fiber.RuntimeFiber<void>>
|
||||||
readonly forkFetch: Effect.Effect<Fiber.RuntimeFiber<void>>
|
readonly forkFetch: Effect.Effect<Fiber.RuntimeFiber<void>>
|
||||||
readonly forkRefresh: Effect.Effect<Fiber.RuntimeFiber<void>>
|
readonly forkRefresh: Effect.Effect<Fiber.RuntimeFiber<void>>
|
||||||
|
|
||||||
|
readonly refreshOnWindowFocus: Effect.Effect<void>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -91,6 +94,11 @@ export const make = <A, E, R>(
|
|||||||
Effect.forkDaemon,
|
Effect.forkDaemon,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const refreshOnWindowFocus = Stream.runForEach(
|
||||||
|
BrowserStream.fromEventListenerWindow("focus"),
|
||||||
|
() => forkRefresh,
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
queryRef,
|
queryRef,
|
||||||
stateRef,
|
stateRef,
|
||||||
@@ -99,5 +107,7 @@ export const make = <A, E, R>(
|
|||||||
forkInterrupt,
|
forkInterrupt,
|
||||||
forkFetch,
|
forkFetch,
|
||||||
forkRefresh,
|
forkRefresh,
|
||||||
|
|
||||||
|
refreshOnWindowFocus,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user