QueryClient work
All checks were successful
Lint / lint (push) Successful in 12s

This commit is contained in:
Julien Valverdé
2025-03-14 03:56:54 +01:00
parent ed384a62a8
commit 68c68417d8
2 changed files with 27 additions and 5 deletions

View File

@@ -24,3 +24,7 @@ export const layer = <Self, Id extends string, E>(
return { errors, handle } return { errors, handle }
})) }))
export class DefaultErrorHandler extends Tag("@reffuse/extension-query/DefaultErrorHandler")<DefaultErrorHandler>() {}
export const DefaultErrorHandlerLive = layer(DefaultErrorHandler)

View File

@@ -11,9 +11,27 @@ export interface LayerProps<EH, HandledE> {
readonly ErrorHandler?: Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>> readonly ErrorHandler?: Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
} }
export const layer = <EH = never, HandledE = never>( export const layer = <
EH = ErrorHandler.DefaultErrorHandler,
HandledE = never,
>(
props: LayerProps<EH, HandledE> props: LayerProps<EH, HandledE>
): Layer.Layer<QueryClient<EH, HandledE>> => ): Layer.Layer<
Layer.effect(Context.GenericTag<QueryClient<EH, HandledE>>("@reffuse/extension-query/QueryClient"), Effect.succeed({ QueryClient<EH, HandledE>,
ErrorHandler: props.ErrorHandler never,
})) typeof props.ErrorHandler extends undefined
? ErrorHandler.DefaultErrorHandler
: never
> => Layer.empty.pipe(
Layer.provideMerge(Layer.effect(
Context.GenericTag<QueryClient<EH, HandledE>>("@reffuse/extension-query/QueryClient"),
Effect.succeed({
ErrorHandler: (props.ErrorHandler ?? ErrorHandler.DefaultErrorHandler) as Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
})),
),
Layer.provideMerge(props.ErrorHandler
? Layer.empty
: ErrorHandler.DefaultErrorHandlerLive
),
)