@reffuse/extension-query 0.1.4 #15
@@ -37,11 +37,11 @@ export const make = <K extends readonly unknown[], A, FallbackA, E, HandledE, R>
|
|||||||
|
|
||||||
const queryStateTag = QueryState.makeTag<A | FallbackA, Exclude<E, HandledE>>()
|
const queryStateTag = QueryState.makeTag<A | FallbackA, Exclude<E, HandledE>>()
|
||||||
|
|
||||||
const run = (key: K) => Effect.all([
|
const run = (key: K) => Effect.Do.pipe(
|
||||||
queryStateTag,
|
Effect.bind("state", () => queryStateTag),
|
||||||
QueryClient,
|
Effect.bind("client", () => QueryClient),
|
||||||
]).pipe(
|
|
||||||
Effect.flatMap(([state, client]) => state.set(AsyncData.loading()).pipe(
|
Effect.flatMap(({ state, client }) => state.set(AsyncData.loading()).pipe(
|
||||||
Effect.andThen(mutation(key)),
|
Effect.andThen(mutation(key)),
|
||||||
client.errorHandler.handle,
|
client.errorHandler.handle,
|
||||||
Effect.matchCauseEffect({
|
Effect.matchCauseEffect({
|
||||||
@@ -64,11 +64,11 @@ export const make = <K extends readonly unknown[], A, FallbackA, E, HandledE, R>
|
|||||||
value => Ref.set(globalStateRef, value),
|
value => Ref.set(globalStateRef, value),
|
||||||
))
|
))
|
||||||
|
|
||||||
const forkMutate = (...key: K) => Effect.all([
|
const forkMutate = (...key: K) => Effect.Do.pipe(
|
||||||
Ref.make(AsyncData.noData<A | FallbackA, Exclude<E, HandledE>>()),
|
Effect.bind("stateRef", () => Ref.make(AsyncData.noData<A | FallbackA, Exclude<E, HandledE>>())),
|
||||||
Queue.unbounded<AsyncData.AsyncData<A | FallbackA, Exclude<E, HandledE>>>(),
|
Effect.bind("stateQueue", () => Queue.unbounded<AsyncData.AsyncData<A | FallbackA, Exclude<E, HandledE>>>()),
|
||||||
]).pipe(
|
|
||||||
Effect.flatMap(([stateRef, stateQueue]) =>
|
Effect.flatMap(({ stateRef, stateQueue }) =>
|
||||||
Effect.addFinalizer(() => Queue.shutdown(stateQueue)).pipe(
|
Effect.addFinalizer(() => Queue.shutdown(stateQueue)).pipe(
|
||||||
Effect.andThen(run(key)),
|
Effect.andThen(run(key)),
|
||||||
Effect.scoped,
|
Effect.scoped,
|
||||||
|
|||||||
@@ -80,13 +80,12 @@ export const make = <K extends readonly unknown[], A, FallbackA, E, HandledE, R>
|
|||||||
}))
|
}))
|
||||||
)
|
)
|
||||||
|
|
||||||
const run = Effect.all([
|
const run = Effect.Do.pipe(
|
||||||
queryStateTag,
|
Effect.bind("state", () => queryStateTag),
|
||||||
QueryClient,
|
Effect.bind("client", () => QueryClient),
|
||||||
]).pipe(
|
Effect.bind("latestKey", () => latestKeyRef.pipe(Effect.flatMap(identity))),
|
||||||
Effect.flatMap(([state, client]) => latestKeyRef.pipe(
|
|
||||||
Effect.flatMap(identity),
|
Effect.flatMap(({ state, client, latestKey }) => query(latestKey).pipe(
|
||||||
Effect.flatMap(key => query(key).pipe(
|
|
||||||
client.errorHandler.handle,
|
client.errorHandler.handle,
|
||||||
Effect.matchCauseEffect({
|
Effect.matchCauseEffect({
|
||||||
onSuccess: v => Effect.succeed(AsyncData.success(v)).pipe(
|
onSuccess: v => Effect.succeed(AsyncData.success(v)).pipe(
|
||||||
@@ -97,7 +96,6 @@ export const make = <K extends readonly unknown[], A, FallbackA, E, HandledE, R>
|
|||||||
),
|
),
|
||||||
}),
|
}),
|
||||||
)),
|
)),
|
||||||
)),
|
|
||||||
|
|
||||||
Effect.provide(context),
|
Effect.provide(context),
|
||||||
Effect.provide(QueryProgress.QueryProgress.Live),
|
Effect.provide(QueryProgress.QueryProgress.Live),
|
||||||
|
|||||||
Reference in New Issue
Block a user