@reffuse/extension-query 0.1.5 #16
26
packages/example/src/QueryErrorHandler.tsx
Normal file
26
packages/example/src/QueryErrorHandler.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
import { HttpClientError } from "@effect/platform"
|
||||
import { ErrorHandler } from "@reffuse/extension-query"
|
||||
import { Cause, Chunk, Effect, flow, Match, Stream } from "effect"
|
||||
import { R } from "./reffuse"
|
||||
|
||||
|
||||
export class QueryErrorHandler extends ErrorHandler.Tag("QueryErrorHandler")<QueryErrorHandler,
|
||||
HttpClientError.HttpClientError
|
||||
>() {}
|
||||
|
||||
export const QueryErrorHandlerLive = ErrorHandler.layer(QueryErrorHandler)
|
||||
|
||||
|
||||
export function VQueryErrorHandler() {
|
||||
R.useFork(() => QueryErrorHandler.pipe(Effect.flatMap(handler =>
|
||||
Stream.runForEach(handler.errors, flow(
|
||||
Cause.failures,
|
||||
Chunk.map(flow(Match.value,
|
||||
Match.tag("RequestError", () => Effect.sync(() => {})),
|
||||
Match.tag("ResponseError", () => Effect.sync(() => {})),
|
||||
Match.exhaustive,
|
||||
)),
|
||||
Effect.all,
|
||||
))
|
||||
)), [])
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import { Layer } from "effect"
|
||||
import { StrictMode } from "react"
|
||||
import { createRoot } from "react-dom/client"
|
||||
import { ReffuseRuntime } from "reffuse"
|
||||
import { QueryErrorHandler, QueryErrorHandlerLive } from "./QueryErrorHandler"
|
||||
import { GlobalContext } from "./reffuse"
|
||||
import { routeTree } from "./routeTree.gen"
|
||||
|
||||
@@ -15,7 +16,8 @@ const layer = Layer.empty.pipe(
|
||||
Layer.provideMerge(Geolocation.layer),
|
||||
Layer.provideMerge(Permissions.layer),
|
||||
Layer.provideMerge(FetchHttpClient.layer),
|
||||
Layer.provideMerge(QueryClient.layer()),
|
||||
Layer.provideMerge(QueryClient.layer({ ErrorHandler: QueryErrorHandler })),
|
||||
Layer.provideMerge(QueryErrorHandlerLive),
|
||||
)
|
||||
|
||||
const router = createRouter({ routeTree })
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { HttpClientError } from "@effect/platform"
|
||||
import { QueryService } from "@reffuse/extension-query"
|
||||
import { ParseResult, Schema } from "effect"
|
||||
|
||||
@@ -8,5 +7,5 @@ export const Result = Schema.Array(Schema.String)
|
||||
export class Uuid4Query extends QueryService.Tag("Uuid4Query")<Uuid4Query,
|
||||
readonly ["uuid4", number],
|
||||
typeof Result.Type,
|
||||
HttpClientError.HttpClientError | ParseResult.ParseError
|
||||
ParseResult.ParseError
|
||||
>() {}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { HttpClient } from "@effect/platform"
|
||||
import { HttpClient, HttpClientError } from "@effect/platform"
|
||||
import { Clipboard, Geolocation, Permissions } from "@effect/platform-browser"
|
||||
import { LazyRefExtension } from "@reffuse/extension-lazyref"
|
||||
import { ErrorHandler, QueryClient, QueryExtension } from "@reffuse/extension-query"
|
||||
import { QueryClient, QueryExtension } from "@reffuse/extension-query"
|
||||
import { Reffuse, ReffuseContext } from "reffuse"
|
||||
import { QueryErrorHandler } from "./QueryErrorHandler"
|
||||
|
||||
|
||||
export const GlobalContext = ReffuseContext.make<
|
||||
@@ -10,8 +11,8 @@ export const GlobalContext = ReffuseContext.make<
|
||||
| Geolocation.Geolocation
|
||||
| Permissions.Permissions
|
||||
| HttpClient.HttpClient
|
||||
| QueryClient.QueryClient<ErrorHandler.DefaultErrorHandler, never>
|
||||
| ErrorHandler.DefaultErrorHandler
|
||||
| QueryClient.QueryClient<QueryErrorHandler, HttpClientError.HttpClientError>
|
||||
| QueryErrorHandler
|
||||
>()
|
||||
|
||||
export class GlobalReffuse extends Reffuse.Reffuse.pipe(
|
||||
|
||||
Reference in New Issue
Block a user