@reffuse/extension-query 0.1.5 #16

Merged
Thilawyn merged 347 commits from next into master 2025-06-01 05:28:47 +02:00
2 changed files with 25 additions and 27 deletions
Showing only changes of commit ab1f851428 - Show all commits

View File

@@ -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,

View File

@@ -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),