From adaadf13b25ba90189af4aaa82d350d8646f2d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 4 Mar 2025 23:18:35 +0100 Subject: [PATCH] Working service query --- packages/example/src/routes/query/service.tsx | 11 ++++++----- packages/reffuse/src/ReffuseContext.tsx | 16 ++++++++-------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/example/src/routes/query/service.tsx b/packages/example/src/routes/query/service.tsx index ad1e3de..638dbe3 100644 --- a/packages/example/src/routes/query/service.tsx +++ b/packages/example/src/routes/query/service.tsx @@ -1,8 +1,9 @@ import { QueryContext } from "@/query/reffuse" import { Uuid4Query } from "@/query/services" +import { Uuid4QueryService } from "@/query/views/Uuid4QueryService" import { R } from "@/reffuse" import { createFileRoute } from "@tanstack/react-router" -import { Effect, Layer } from "effect" +import { Layer } from "effect" import { useMemo } from "react" @@ -11,16 +12,16 @@ export const Route = createFileRoute("/query/service")({ }) function RouteComponent() { - const context = R.useContext() + const context = R.useLayer() const layer = useMemo(() => Layer.empty.pipe( Layer.provideMerge(Uuid4Query.Uuid4QueryLive), - Layer.provide(context) - ), []) + Layer.provide(context), + ), [context]) return ( - + ) } diff --git a/packages/reffuse/src/ReffuseContext.tsx b/packages/reffuse/src/ReffuseContext.tsx index f1898ff..89d1394 100644 --- a/packages/reffuse/src/ReffuseContext.tsx +++ b/packages/reffuse/src/ReffuseContext.tsx @@ -97,15 +97,15 @@ export function useMergeAll>( return React.useMemo(() => Context.mergeAll(...values), values) } -export function useMergeAllLayers>( +export function useMergeAllLayers>( ...contexts: [...{ [K in keyof T]: ReffuseContext }] ): Layer.Layer { - const values = Array.map( - contexts as Array.NonEmptyArray>, - v => React.use(v.Context), - ) + const values = contexts.map(v => React.use(v.Context)) - return React.useMemo(() => Layer.mergeAll( - ...Array.map(values, context => Layer.effectContext(Effect.succeed(context))) - ), values) + return React.useMemo(() => Array.isNonEmptyArray(values) + ? Layer.mergeAll( + ...Array.map(values, context => Layer.effectContext(Effect.succeed(context))) + ) + : Layer.empty as Layer.Layer, + values) }