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 }
}))
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>>
}
export const layer = <EH = never, HandledE = never>(
export const layer = <
EH = ErrorHandler.DefaultErrorHandler,
HandledE = never,
>(
props: LayerProps<EH, HandledE>
): Layer.Layer<QueryClient<EH, HandledE>> =>
Layer.effect(Context.GenericTag<QueryClient<EH, HandledE>>("@reffuse/extension-query/QueryClient"), Effect.succeed({
ErrorHandler: props.ErrorHandler
}))
): Layer.Layer<
QueryClient<EH, HandledE>,
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
),
)