Test ErrorObserver
All checks were successful
Lint / lint (push) Successful in 12s

This commit is contained in:
Julien Valverdé
2025-11-08 15:42:43 +01:00
parent 0718ba48bd
commit d682643407

View File

@@ -1,8 +1,8 @@
import { HttpClient } from "@effect/platform" import { HttpClient, type HttpClientError } from "@effect/platform"
import { Container, Heading, Text } from "@radix-ui/themes" import { Container, Heading, Text } from "@radix-ui/themes"
import { createFileRoute } from "@tanstack/react-router" import { createFileRoute } from "@tanstack/react-router"
import { Effect, Match, Schema } from "effect" import { Cause, Chunk, Console, Effect, flow, Match, Option, Schema, Stream } from "effect"
import { Component, Result, Subscribable } from "effect-fc" import { Component, ErrorObserver, Result, Subscribable } from "effect-fc"
import { runtime } from "@/runtime" import { runtime } from "@/runtime"
@@ -23,6 +23,21 @@ const ResultView = Component.makeUntraced("Result")(function*() {
)) ))
const [result] = yield* Subscribable.useSubscribables([resultSubscribable]) const [result] = yield* Subscribable.useSubscribables([resultSubscribable])
yield* Component.useOnMount(() => ErrorObserver.ErrorObserver<HttpClientError.HttpClientError>().pipe(
Effect.andThen(observer => observer.subscribe),
Effect.andThen(Stream.fromQueue),
Stream.unwrap,
Stream.runForEach(flow(
Cause.failures,
Chunk.findFirst(e => e._tag === "RequestError" || e._tag === "ResponseError"),
Option.match({
onSome: e => Console.log("ResultView HttpClient error", e),
onNone: () => Effect.void,
}),
)),
Effect.forkScoped,
))
return ( return (
<Container> <Container>
{Match.value(result).pipe( {Match.value(result).pipe(