From d61339ea6a55965c0c30cf5804fc1b4fac3f1a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 5 Mar 2025 02:23:43 +0100 Subject: [PATCH] Query work --- packages/example/src/routes/query.tsx | 28 ++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/example/src/routes/query.tsx b/packages/example/src/routes/query.tsx index eb01ac0..07387ac 100644 --- a/packages/example/src/routes/query.tsx +++ b/packages/example/src/routes/query.tsx @@ -1,9 +1,10 @@ import { R } from "@/reffuse" import { HttpClient } from "@effect/platform" -import { Button, Container, Flex, Text } from "@radix-ui/themes" +import { Button, Container, Flex, Slider, Text } from "@radix-ui/themes" import { createFileRoute } from "@tanstack/react-router" import * as AsyncData from "@typed/async-data" -import { Console, Effect, Schema } from "effect" +import { Array, Console, Effect, flow, Option, Schema } from "effect" +import { useState } from "react" export const Route = createFileRoute("/query")({ @@ -11,21 +12,23 @@ export const Route = createFileRoute("/query")({ }) -const Result = Schema.Tuple(Schema.String) +const Result = Schema.Array(Schema.String) function RouteComponent() { const runSync = R.useRunSync() + const [count, setCount] = useState(1) + const query = R.useQuery({ - query: () => Console.log("Querying...").pipe( - Effect.andThen(Effect.sleep("500 millis")), - Effect.andThen(HttpClient.get("https://www.uuidtools.com/api/generate/v4")), + query: () => Console.log(`Querying ${ count } IDs...`).pipe( + // Effect.andThen(Effect.sleep("500 millis")), + Effect.andThen(HttpClient.get(`https://www.uuidtools.com/api/generate/v4/count/${ count }`)), HttpClient.withTracerPropagation(false), Effect.flatMap(res => res.json), Effect.flatMap(Schema.decodeUnknown(Result)), Effect.scoped, ), - key: [], + key: ["uuid4", count], }) const [state] = R.useRefState(query.state) @@ -34,6 +37,17 @@ function RouteComponent() { return ( + + {AsyncData.match(state, { NoData: () => "No data yet",