import { Button, Container, Flex, Heading, Text } from "@radix-ui/themes" import { createFileRoute } from "@tanstack/react-router" import { AsyncResult } from "effect/unstable/reactivity" import { Component, Mutation, View } from "effect-fc-next" import { fetchPost, type Post } from "@/post" import { runtime } from "@/runtime" const PostResultView = (props: { readonly result: AsyncResult.AsyncResult }) => AsyncResult.match(props.result, { onInitial: () => Ready to load., onFailure: () => Request failed., onSuccess: result => ( <> {result.value.title} {result.value.body} ), }) const ResultRouteComponent = Component.make("ResultRouteView")(function*() { const mutation = yield* Component.useOnMount(() => Mutation.make({ f: (_: undefined) => fetchPost(1), })) const [result] = yield* View.useAll([mutation.state]) const runPromise = yield* Component.useRunPromise() return ( ) }).pipe( Component.withContext(runtime.context), ) export const Route = createFileRoute("/result")({ component: ResultRouteComponent, })