Files
reffuse/packages/example/src/routes/tests.tsx
Julien Valverdé e83e86f8f1
All checks were successful
Lint / lint (push) Successful in 11s
Promise tests
2025-02-18 02:56:05 +01:00

41 lines
1.1 KiB
TypeScript

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")({
component: RouteComponent
})
function RouteComponent() {
// const value = R.useMemoScoped(Effect.addFinalizer(() => Console.log("cleanup")).pipe(
// Effect.andThen(makeUuid4),
// Effect.provide(GetRandomValues.CryptoRandom),
// ), [])
// 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),
Effect.delay("1 second"),
runPromise,
), [runPromise])
console.log(promise)
return <div>Hello "/tests"!</div>
}