0.1.13 #18
@@ -26,11 +26,11 @@ declare module "@tanstack/react-router" {
|
|||||||
|
|
||||||
|
|
||||||
createRoot(document.getElementById("root")!).render(
|
createRoot(document.getElementById("root")!).render(
|
||||||
<StrictMode>
|
// <StrictMode>
|
||||||
<ReffuseRuntime.Provider>
|
<ReffuseRuntime.Provider>
|
||||||
<GlobalContext.Provider layer={layer}>
|
<GlobalContext.Provider layer={layer}>
|
||||||
<RouterProvider router={router} />
|
<RouterProvider router={router} />
|
||||||
</GlobalContext.Provider>
|
</GlobalContext.Provider>
|
||||||
</ReffuseRuntime.Provider>
|
</ReffuseRuntime.Provider>
|
||||||
</StrictMode>
|
// </StrictMode>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as AsyncData from "@typed/async-data"
|
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<A, E, R> {
|
export interface QueryRunner<A, E, R> {
|
||||||
@@ -24,9 +24,17 @@ export const make = <A, E, R>(
|
|||||||
|
|
||||||
const interrupt = fiberRef.pipe(
|
const interrupt = fiberRef.pipe(
|
||||||
Effect.flatMap(Option.match({
|
Effect.flatMap(Option.match({
|
||||||
onSome: flow(
|
onSome: fiber => Ref.set(fiberRef, Option.none()).pipe(
|
||||||
Fiber.interrupt,
|
Effect.andThen(Fiber.interrupt(fiber))
|
||||||
Effect.andThen(Ref.set(fiberRef, Option.none())),
|
),
|
||||||
|
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,
|
onNone: () => Effect.void,
|
||||||
}))
|
}))
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export const QueryExtension = ReffuseExtension.make(() => ({
|
|||||||
|
|
||||||
this.useFork(() => Stream.runForEach(runner.fiberRef.changes, Console.log), [])
|
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(Ref.set(runner.queryRef, props.effect())),
|
||||||
Effect.andThen(runner.forkFetch),
|
Effect.andThen(runner.forkFetch),
|
||||||
), [runner, ...props.deps])
|
), [runner, ...props.deps])
|
||||||
|
|||||||
Reference in New Issue
Block a user