usePromiseScoped
All checks were successful
Lint / lint (push) Successful in 10s

This commit is contained in:
Julien Valverdé
2025-02-18 22:28:49 +01:00
parent bfcc097882
commit e71239b903
4 changed files with 21 additions and 67 deletions

View File

@@ -15,13 +15,11 @@ const Result = Schema.Tuple(Schema.String)
type Result = typeof Result.Type
function RouteComponent() {
const promise = R.usePromise(HttpClient.HttpClient.pipe(
const promise = R.usePromiseScoped(HttpClient.HttpClient.pipe(
Effect.flatMap(client => client.get("https://www.uuidtools.com/api/generate/v4")),
HttpClient.withTracerPropagation(false),
Effect.flatMap(res => res.json),
Effect.flatMap(Schema.decodeUnknown(Result)),
Effect.scoped,
))
return (

View File

@@ -1,8 +1,6 @@
import { R } from "@/reffuse"
import { createFileRoute } from "@tanstack/react-router"
import { GetRandomValues, makeUuid4 } from "@typed/id"
import { Console, Effect } from "effect"
import { useMemo, useState } from "react"
export const Route = createFileRoute("/tests")({
@@ -16,24 +14,10 @@ function RouteComponent() {
// ), [])
// console.log(value)
// R.useFork(Effect.addFinalizer(() => Console.log("cleanup")).pipe(
// Effect.andThen(Console.log("ouient")),
// Effect.delay("1 second"),
// ))
const runPromise = R.useRunPromise()
const [, setValue] = useState("")
const promise = useMemo(() => makeUuid4.pipe(
Effect.provide(GetRandomValues.CryptoRandom),
Effect.tap(id => Effect.sync(() => setValue(id))),
Effect.andThen(Console.log),
R.useFork(Effect.addFinalizer(() => Console.log("cleanup")).pipe(
Effect.andThen(Console.log("ouient")),
Effect.delay("1 second"),
runPromise,
), [runPromise])
console.log(promise)
))
return <div>Hello "/tests"!</div>